Когда 'eval' в Ruby оправдан?
"«Eval» должен быть противным?"вдохновил этот:
В основном все согласны с тем, чтоeval
это плохо, и в большинстве случаев есть более элегантная / более безопасная замена.
Поэтому я хотел спросить: еслиeval
часто используется неправильно, действительно ли это необходимо в качестве языковой функции? Делает ли это больше зла, чем добра?
Лично единственное место, где я нахожу это полезным, это интерполировать строки, представленные в файле конфигурации.
Изменить: Цель этого вопроса состоит в том, чтобы получить как можно больше реальных случаев, когда eval является единственным или лучшим решением. Поэтому, пожалуйста, не идите в направлении «должен ли язык ограничивать творческие способности программиста».
Edit2: И когда я говорюeval
Конечно, я имею в видуeval
не передавая рубиновый блокinstance_eval
или жеclass_eval
.