"“eval”应该是令人讨厌的吗?” 启发了这一点:
大多数人都同意eval
不好,在大多数情况下有更优雅/更安全的替代品。
所以我想问:如果eval
经常被滥用,它真的需要作为一种语言功能吗?难道是恶多于善吗?
就我个人而言,我发现它唯一有用的地方是插入配置文件中提供的字符串。
编辑:这个问题的目的是当 eval 是唯一或最佳解决方案时,获得尽可能多的现实案例。所以请不要陷入“语言是否应该限制程序员的创造力”的方向。
编辑2:当我说eval
,当然我指的是eval
ing 字符串,而不是将 ruby 块传递给instance_eval
or class_eval
.
我知道的唯一情况(除了“我有这个字符串并且我想执行它”)是动态处理局部和全局变量。 Ruby 有获取局部变量和全局变量名称的方法,但缺少根据这些名称获取或设置其值的方法。 AFAIK 的唯一方法是eval
.
任何其他用途几乎肯定是错误的。我不是专家,不能明确地说没有其他解决方案,但我见过的每个其他用例都有人说“你需要对此进行评估”,我找到了一个没有的解决方案。
请注意,我说的是字符串评估顺便说一下,在这里。红宝石也有instance_eval
,它可以采用字符串或块在接收器的上下文中执行。这种方法的块形式快速、安全并且非常有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)