问题标签 [eval]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
821 浏览

macros - 评估不适用于未扩展的宏报价

在普通的 lisp 中,我可以这样做:

src-> (defmacro 宏-hello() `"hello")

(eval '(宏你好))

没问题。

在 Clojure 中:

(defmacro 宏你好 [] `"你好")

(eval '(宏你好))

给我一个错误。我做错了什么吗?

Clojure 错误:

线程“主”java.lang.Exception 中的异常:无法解析符号:clojure.lang.Compiler.analyze(Compiler.java:4340) 在 clojure.lang.Compiler 的此上下文中的宏问候 (NO_SOURCE_FILE:12)。 clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:2767) 的分析(Compiler.java:4286) clojure.lang.Compiler.analyzeSeq(Compiler.java:4498) 的 clojure.lang.Compiler.analyze(Compiler .java:4325) 在 clojure.lang.Compiler.analyze(Compiler.java:4286) 在 clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:3862) 在 clojure.lang.Compiler$FnMethod.parse( Compiler.java:3697) 在 clojure.lang.Compiler$FnMethod.access$1100(Compiler.java:3574) 在 clojure.lang.Compiler$FnExpr.parse(Compiler.java:2963) 在 clojure.lang.Compiler.analyzeSeq(编译器.java:4494) at clojure.lang.Compiler.analyze(Compiler.java:4325) at clojure.lang.Compiler.eval(Compiler.java:4530) at clojure.core$eval__3990.invoke(core.clj:1728) at com. yourcompany.defpackage$_main__4.invoke(defpackage.clj:12) at clojure.lang.AFn.applyToHelper(AFn.java:171) at clojure.lang.AFn.applyTo(AFn.java:164) at com.yourcompany.defpackage .main(未知来源)引起:java.lang.Exception:无法解析符号:在clojure.lang.Compiler.resolveIn(Compiler.java:4682)的clojure.lang.Compiler.resolve( Compiler.java:4628) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:14325) at clojure.lang.Compiler.eval(Compiler.java:4530) at clojure.core$eval__3990.invoke(core.clj:1728) at com.yourcompany.defpackage$_main__4.invoke(defpackage.clj:12) at clojure.lang.AFn.applyToHelper(AFn.java:171) at clojure.lang.AFn.applyTo(AFn.java:164) at com.yourcompany.defpackage.main(Unknown Source) 原因:java.lang.Exception:无法解析符号:在 clojure.lang.Compiler.resolveIn(Compiler.java:4682) 在 clojure.lang.Compiler.resolve(Compiler.java:4628) 在 clojure.lang.Compiler.analyzeSymbol( Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:14325) at clojure.lang.Compiler.eval(Compiler.java:4530) at clojure.core$eval__3990.invoke(core.clj:1728) at com.yourcompany.defpackage$_main__4.invoke(defpackage.clj:12) at clojure.lang.AFn.applyToHelper(AFn.java:171) at clojure.lang.AFn.applyTo(AFn.java:164) at com.yourcompany.defpackage.main(Unknown Source) 原因:java.lang.Exception:无法解析符号:在 clojure.lang.Compiler.resolveIn(Compiler.java:4682) 在 clojure.lang.Compiler.resolve(Compiler.java:4628) 在 clojure.lang.Compiler.analyzeSymbol( Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:1yourcompany.defpackage$_main__4.invoke(defpackage.clj:12) at clojure.lang.AFn.applyToHelper(AFn.java:171) at clojure.lang.AFn.applyTo(AFn.java:164) at com.yourcompany.defpackage .main(未知来源)引起:java.lang.Exception:无法解析符号:在clojure.lang.Compiler.resolveIn(Compiler.java:4682)的clojure.lang.Compiler.resolve( Compiler.java:4628) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:1yourcompany.defpackage$_main__4.invoke(defpackage.clj:12) at clojure.lang.AFn.applyToHelper(AFn.java:171) at clojure.lang.AFn.applyTo(AFn.java:164) at com.yourcompany.defpackage .main(未知来源)引起:java.lang.Exception:无法解析符号:在clojure.lang.Compiler.resolveIn(Compiler.java:4682)的clojure.lang.Compiler.resolve( Compiler.java:4628) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:1无法解析符号:在 clojure.lang.Compiler.resolveIn(Compiler.java:4682) 在 clojure.lang.Compiler.resolve(Compiler.java:4628) 在 clojure.lang.Compiler.analyzeSymbol( Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:1无法解析符号:在 clojure.lang.Compiler.resolveIn(Compiler.java:4682) 在 clojure.lang.Compiler.resolve(Compiler.java:4628) 在 clojure.lang.Compiler.analyzeSymbol( Compiler.java:4605) at clojure.lang.Compiler.analyze(Compiler.java:4307) ... 还有 17 个 Java 结果:1

[编辑]:添加结束双引号

0 投票
1 回答
280 浏览

data-binding - 在 Databinder.Eval 之前

..曾经有另一种使用“ItemBinder”属性将项目绑定到 ASP.Net 中的数据容器的方法,但谷歌上没有任何东西可以刷新我的记忆。

通常,我会有一个字符串数组,当绑定时我的 DataGrid 应该显示数组的值。这是 DataBinder.Eval() 的替代方法。

谢谢

0 投票
7 回答
321 浏览

language-agnostic - 我什么时候应该使用 eval (获取一个字符串并在运行时将其作为代码执行)?

我经常听到这样的论点(在 javascript 中,但许多语言都有类似 eval 的功能)使用 eval 是“不好的”。论点是您认为使用 eval 的大多数事情都可以通过其他方式完成,事实上 eval 在大多数情况下非常慢,并且它可以允许用户输入要执行的代码(如果没有采取适当的预防措施)。我们知道大多数功能不仅本质上是“坏的”,而是让我们关注 eval,

eval 的一些有效用途是什么?(除了为调试应用程序的开发人员提供了一个不错的功能)

0 投票
3 回答
136 浏览

javascript - javascript中有没有办法将给定函数的定义作为字符串获取,以便可能修改和评估?

我试图在一个新的上下文中评估一个函数,即一个包含某个定义的单词但在范围内不存在的函数。如果我将函数定义为字符串,这很容易,但我想提供使用常规函数列表执行此操作的能力,如下所示:

然后稍后:

我缺少的是定义()函数或等效函数,它返回函数的源。这在javascript中可能吗?

0 投票
6 回答
21411 浏览

vb.net - 在 vb.net 中做数学,就像在 javascript 中的 Eval

有什么方法可以解析 vb.net 中的字符串(例如,内置方法),可以像 Eval 一样进行数学运算吗?例如,3+(7/3.5) 作为字符串将返回 2。

我不是要你为我编写代码,我只是想知道是否有内置的方法可以做到这一点,如果没有,我会自己编写代码。

我可以打赌它自己无法解析像 Sin(90) 这样的东西,我知道需要用 Math.Sin(90) 替换它。

如果有内置方法,你如何使用它?

0 投票
5 回答
3091 浏览

python - Python Eval:这段代码有什么问题?

我正在尝试编写一个非常简单的 Python 实用程序供个人使用,它计算文本文件中在命令行中指定的谓词为真的行数。这是代码:

当我使用 运行它时python count.py myFile.txt "int(line) == 0",我收到以下错误:

对我来说,这看起来像是完全有效的 Python 代码(尽管我以前从未使用过 Python 的 eval,所以我不知道它的怪癖(如果有的话)是什么)。请告诉我如何解决此问题以使其正常工作。

0 投票
1 回答
263 浏览

binding - 有没有办法将所有定义的变量传递给 GroovyShell?

现在,当我尝试在 Groovy 中评估一段代码时,我必须执行以下操作:

当您定义了很多变量时,这可能会非常讨厌。有没有更好的方法来做到这一点?是否有类似 Python 的locals东西,或者类似的东西列出了所有声明的变量?

0 投票
3 回答
449 浏览

ruby - Ruby 中的 eval 有点复杂

我需要 eval 的特殊行为来评估字符串,例如:

进入

是否可以?如果是,你能举个恰当的例子吗?我最近发现了这个例子,演讲是关于用米和英寸来评估字符串。

0 投票
6 回答
1266 浏览

javascript - Javascript:由 eval() 和 new Function() 创建的调试代码

我试图将一个私有变量放入一个已经存在的函数中,例如:

我的目标是运行 get() 函数,该函数由现有的 AObject 拥有,带有私有 var ...我使用 eval(或 new Function)获得它,但不幸的是调试器将被破坏!

那么,有没有一种方法可以在不使用 eval 的情况下实现这一点,或者有一种方法可以使用 eval 并保持调试器有用?

0 投票
2 回答
13294 浏览

javascript - 如何以对象形式在eval中传递参数?

我有这个 json,当我得到这个 json 时,我需要运行回调对象中的函数。

所以根据这个我需要运行这个:

我可以使用 eval 函数来做到这一点,例如:

我可以通过将其放入 for in 并将参数写入字符串来自动执行此操作,但我认为这不是最好的方法。

有没有办法从 var 分配函数名称并将其参数作为对象提供,在我的情况下,例如:

我知道这不是这样做的方法,但这是我想学习的。

谢谢,思南。