در زبان Ruby یک کلاس DynamicStruct بسازید که هنگام ایجاد نمونه با دریافت یک آرایه از نامها، برای هر نام با استفاده از define_method متد خواندن و نوشتن (getter و setter) تولید کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:10 0.0
برای حل این مسئله از متد define_method در داخل تعریف کلاس استفاده کنید و برای هر نامی که دریافت میکنید یک متد getter بسازید که مقدار را با instance_variable_get خوانده و یک متد setter بسازید که مقدار را با instance_variable_set ذخیره کند. از تبدیل نامها به نماد یا رشته مناسب (مثل "@#{name}") استفاده کنید و هنگام تکرار روی آرایه نامها یک متغیر محلی برای جلوگیری از مشکلات بستهبندی بلاک نگه دارید. تکنولوژی مورد استفاده: Ruby (metaprogramming با define_method). نکات: از eval پرهیز کنید، برای تست کلاس چند نمونه بسازید و مقدارها را با متدهای داینامیک خوانده/نوشته کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
هنگام استفاده از define_method در حلقه برای تولید getter و setter، یک متغیر محلی داخلی بلوک تعریف کنید تا به مشکل closure برخورد نکنید. نام متغیر را به صورت "@#{name}" بسازید و از instance_variable_get/instance_variable_set برای خواندن و نوشتن استفاده کنید. از eval خودداری کنید تا امنیت و کارایی حفظ شود و به جای آن از متدهای متاپرامیگینگ استفاده کنید. برای اعتبارسنجی، چند نمونه از کلاس ایجاد کنید و با نامها و مقادیر مختلف با متدهای دینامیک مقداردهی و بازیابی کنید.
گزارش