Obecnie eksperymentuję z Ruby i Railsami i trafiłem na kilka rozdziałów w samouczkach i książkach na temat metaprogramowania. Wiele osób wspomina, że jest istotnym składnikiem Rubiego, ale tak naprawdę nie zagłębia się w szczegóły. To tak, jakby metaprogramowanie było ostateczną granicą dla programistów Ruby. Pochodzę z tła .NET, staram się zrozumieć, dlaczego jest podobno tak przydatne.Dlaczego ważne jest, aby nauczyć się metaprogramowania i eigenclasses w Ruby?
- Jakie korzyści daje korzystanie z metaprogramowania?
- Co to jest eigenclass i jak różni się od singletonu?
- W jakich sytuacjach często używa się metaprogramowania?
- Jakie są konsekwencje etyczne związane z używaniem kodu do modyfikowania zachowania innego kodu, zwłaszcza kodu, który nie jest twoim własnym?
+1 Bardzo podoba mi się przykład 'attr_accessor', ponieważ pokazuje ważną zaletę silnych możliwości metaprogramowania: metaprogramowanie utrzymuje prosty język. 'attr_accessor' może z łatwością być oddzielną konstrukcją językową w innym języku (powiązane: właściwości w C# itd.). W Ruby jest to po prostu inna metoda. –
Dobra odpowiedź. Chociaż prawdą jest, że klasa eigenclass i singleton oznaczają to samo w Ruby, to jest teraz preferowanym terminem, na co wskazuje istnienie metod "singleton_class", "singleton_methods" i "define_singleton_method". –