کلاسی به نام Config بنویسید که با استفاده از method_missing بتواند خواص دلخواه را در یک هش داخلی مدیریت کند طوری که بتوان مقادیر را با روش assignment (مثلاً config.database = 'db') ست کرد، آن‌ها را خواند (مثلاً config.database) و با پرسش‌های ؟ (مثلاً config.debug?) وجود یا مقدار بولی آن‌ها را بررسی کرد.

3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:52

0.0

برای حل این مسئله یک هش داخلی (مثلاً @data = {}) نگه دارید و متد method_missing را بازنویسی کنید: اگر نام متد با "=" تمام می‌شود مقدار را در هش قرار دهید، اگر با "?" تمام می‌شود وجود/مقدار بولی را برگردانید و در غیر این صورت مقدار مربوطه را بازگردانید یا nil. همچنین respond_to_missing? را بازنویسی کنید تا بازتاب (reflection) صحیح کار کند و برای متدهای نامربوط به super مراجعه کنید. نکته‌ها: نام متد را با to_s پردازش کنید، حتماً assignment حداقل یک آرگومان بپذیرد و برای خوانایی تست‌هایی مثل config.some_key = 1; config.some_key; config.some_key? را امتحان کنید.

توسط پژوهشگر در 220 روز قبل ساعت 01:52
دسته بندی ها: Ruby Ruby for beginner
arman در 220 روز قبل ساعت 11:43

برای پیاده‌سازی کلاس Config با استفاده از method_missing، نام متد را با to_s پردازش کنید و پایان آن را به '=' یا '?' تشخیص دهید تا رفتار مناسب پیاده‌سازی شود. وقتی نام با '=' پایان می‌یابد، حداقل یک آرگومان بپذیرید و مقدار را در @data ذخیره کنید؛ وقتی با '?' پایان می‌یابد، وجود کلید و مقدار بولی آن را بازگردانید و در غیر این صورت مقدار کلید را یا nil برگردانید. همچنین respond_to_missing? را بازنویسی کنید تا بازتاب (reflection) صحیح باشد و برای متدهای نامربوط به super ارجاع داده شود. برای حفظ خوانایی و پایداری، از تست‌هایی مانند config.some_key = 1؛ config.some_key؛ config.some_key؟ استفاده کنید و به مسائلی مانند thread-safety و هم‌ارزی کلیدها فکر کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری