问题标签 [expression-evaluation]
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.
java - C++ and PHP vs C# and Java - unequal results
I found something a little strange in C# and Java. Let's look at this C++ code:
In a console you will see X = 11 (Look at the result here - IdeOne C++).
Now let's look at the same code on C#:
In a console you will see 1 (not 11!) (look at the result here - IdeOne C# I know what you thinking now - "How that is possible?", but let's go to the following code.
Java code:
Result the same as in C# (X = 1, look at the result here).
And for the last time let's look at the PHP code:
Result is 11 (look at the result here).
I have a little theory - these languages (C# and Java) are making a local copy of static variable X on the stack (are they ignoring the static keyword?). And that is reason why result in those languages is 1.
Is somebody here, who have other versions?
c++ - 双打和 oStringStream 的奇怪行为
所以我正在开发一个表达式评估器,作为与工作相关的项目的内部组件。但是当涉及到浮点数学的输出时,我有一些奇怪的行为......
评估者接受一个字符串
看起来好像任何高于 e+004 科学记数法的浮点数都被四舍五入到最接近的整数。谁能解释为什么会发生这种情况以及我如何克服这个问题。
java - 模式评估器
我有一些字符串需要按照以下模式进行评估 -
上面提到的输入具有相同的模式,其中 '()' 或 null 表示为 ' * '。输出被保存到 int/string 数组,因此输出形式是这样的。
请建议一种方法来评估这种模式的输出形式。
c# - 如何避免在 C# 中多次加载程序集?
我在 C# 中有一个表达式评估器项目,它生成 IL 并将 IL 转换为评估方法。问题是,没有办法从 C# 中卸载程序集,并且每次我调用表达式评估时,编译器都会继续将程序集添加到当前应用程序上下文中。为了避免这种情况,我可以做的一件事是创建一个 appdomain,在 appdomain 中生成 IL,并在生成 IL 后终止 appdomain。
这是执行此操作的示例代码。有人可以告诉我处理多个程序集加载问题的有效方法吗?
DynamicMethodState 方法状态;
c# - NCalc 在自定义函数名称中使用符号
假设在我的表达式输入中,我喜欢使用特殊前缀使函数脱颖而出,例如$
:
我会在其中为$proper
和编写自定义函数$upper
。
但是,我收到控制台错误“在字符'$' 处没有可行的替代方案”。如果我去掉符号或使用下划线,它会起作用。
有没有办法在NCalc的函数名中使用符号字符?当函数以数字开头时,这也不起作用(例如,如果我想将函数名称简写double
为2x
)。
(有点类似于NCalc 评估错误在输入 ',' 处没有可行的替代方案)
stored-procedures - 使用用户定义的程序制作评估器
所以我正在使用 DrRacket 并且因为我正在#lang scribble
为我的程序制作手册,所以我想将我的程序运行的实际示例放在使用@interactions
到目前为止,我已经得到了这一部分:
当我这样做时
然后我scribble --htmls ++main-xref-in manual.scrbl
正确运行它呈现为:
有没有办法使用我所有的定义(在不同的文件中)来使用 scribble 进行评估?我尝试将第 7 行更改为:
但是当我尝试渲染它时,它会抛出这样的东西:
我不想在make-evaluator
零件中复制粘贴我的定义(它们很多!)有什么解决办法吗?谢谢敲诈者!
r - R中复合表达式的返回值是多少?
在 R 中,我可以这样做:
或者,如果您愿意:
也许并不奇怪,这两个(复合)表达式的计算结果都是 6。
这是 R 语言的一个(记录在案的)特性,即复合表达式的值等于复合表达式中的最后一个评估语句吗?
官方文档对此主题很轻: http: //cran.r-project.org/doc/manuals/r-release/R-lang.html#Compound-expressions
r - 将评估表达式作为命名 arg 传递给函数 (R) 内的函数
我想扩展一个 data.frame 以包含一个新列并为该列提供一个在函数中传递的动态分配的名称。这是一个简化的示例:
这将向 data.frame 添加一个新列,其变量名称由函数“newColTitle”定义。相反,我想将 newColTitle 评估为“myCustomColTitle”并将其作为此新列的命名标记传递,这样输出 data.fram 包含一个名为“myCustomColTitle”的新列。
这可能吗?也许通过substitute()
, deparse()
, quote()
,eval()
等paste()
。您可以假设我已经阅读了有关此类主题的以下入门书(实际上是好几次):
http://adv-r.had.co.nz/Computing-on-the-language.html
但有些细节并没有完全让我印象深刻。
谢谢
haskell - 更改 Haskell 中每个函数调用的表达式求值顺序
假设我有以下程序:
这只是一个简单的例子,但我认为足以用于演示目的。我怎么能在每次新的(递归)调用foo时改变l1和l2中表达式的求值顺序?我知道它们在表达式内部被评估为惰性(在这种情况下是在运算符中的表达式),而不是在声明它们时,但我需要一种方法,因为可能存在程序进入无限循环的情况。如果这种无限递归发生在第二个求值参数l2上,则没有问题,因为l1总是在*l2之前求值,但如果反过来,即无限地求值l1表达式,则*l2***没有机会评估。因此,如果我可以在每个新的foo函数调用上在 ***l1*和l2表达式评估之间进行权衡,问题就会得到解决。寻找一个好的/通用的解决方案。
编辑:忘了说x或y或两者都可能是无限的结构(列表),这就是问题所在。