在我看来,eval()同样不屑于goto.而且eval,我指的是一个用于执行字符串作为代码的函数,如PHP,Python,JavaScript等所示.是否存在使用eval()合理的情况(perl除外)?如果没有,为什么这么多语言实现它呢?
Mat*_*ght 10
在动态生成代码的情况下,eval通常是最便捷的解决方案.即使在没有正式支持eval的语言(例如Java)中,它们也支持在运行时类似的反射和修改类.(参见Stu Halloway的Java平台组件开发等书籍)
一种合理的用法是,如果您有一种在另一种语言之上构建的解释语言,但是您仍然希望提供某种“转义阴影”,以使人们能够使用基础语言所提供的功能。一个示例是在Lisp中实现Prolog,然后定义一个谓词,该谓词允许通过来直接使用Lisp函数EVAL。