metaprogramming - What's the difference between these two Ruby snippets? -
स्निपेट 1:
मॉड्यूल एक def सेमी (m, ret) class_eval define_method ( M.to_sym) रिटर्न एंड एंड एंड एंड
और स्निपेट 2:
मॉड्यूल B def सेमी (m, ret) class_eval do "def # {M} # {ret} अंत "एंड एंड एंड
इन मॉड्यूल में परिभाषित विधियों का उपयोग किसी कक्षा पर तरीकों को बनाने के लिए किया जाता है, जो कुछ निश्चित मूल्यों को देता है। यहां एक उदाहरण है:
वर्ग जो भी एक सेमी ("दो", 2) अंत
का विस्तार करें और यह 2 नाम का एक तरीका बना देगा, जो वापस आएगा 2. बात यह है, दूसरे स्निपेट में कोड काम नहीं करता है। कोई विचार क्यों? मैंने सोचा कि class_eval
एक स्ट्रिंग ले सकता है।
class_eval कोड> एक तर्क के रूप में एक स्ट्रिंग लेता है, लेकिन आप एक ब्लॉक में फ़ंक्शन को स्ट्रिंग पास कर चुके हैं
मॉड्यूल बी डीईफ़ सेमी (एम, आरट) class_eval ("def # {m} () # {retit end}") अंत की समाप्ति < / कोड>
Comments
Post a Comment