برنامه نویسی
اجتناب از خطاهای صفر – جامعه dev

در اینجا یک روش سریع برای جلوگیری از خطاهای صفر و به دست آوردن خرابی های بهتر در روبی و روبی روی ریل وجود دارد. هش را با کلیدهای شناخته شده به ساختار تبدیل کنید:
data = { a: 1, b: 2, c: 3}
...
MyData = Struct.new(:a,:b,:c)
data = MyData.new(a: 1, b: 2, c: 3)
اگر به جای بازگشت صفر ، یک تایپی را معرفی کنید ، ساختار پرتاب می شود. این حلقه بازخورد شما را محکم می کند و زمان اشکال زدایی را کاهش می دهد.
hash[:d] => nil
struct[:d] => in 'Struct#[]': no member 'd' in struct (NameError)
خیلی عالی است در موقعیت های سیال تر مانند ورودی کاربر چیست؟ شما می توانید هش های ورودی دلخواه را به سرعت با موارد زیر به ساختارهای شناخته شده تبدیل کنید:
params = {a: 1, b: 2, c: 3, x: 9, z: 0}
MyData.new(**params.slice(*MyData.members))
خطرات
در حالی که سازه ها همان رابط کاربری مشابه هش را دارند ، تفاوت های پیچیده ای وجود دارد.
- هش#هر کدام معادل ساختار###pair است.
- کلیدهای Hash#معادل اعضای ساختار#است.
- هیچ معادل Hash#Fetch وجود ندارد.