使用具有表达式求值结果的值创建关联数组像往常一样,我在 Eval 和 Expr 方面遇到了麻烦。
我需要创建一个关联数组,其中的值将是某些表达式的计算结果。
例如我需要创建
aaa=[
"2x2" => 4
]
但是 4 有一个计算表达式 Expr(2*2) 的结果
显然不起作用的蹩脚变体在这里:
aaa=[
"2x2" => 2*2
]
但接下来我会说 2*2 是一个 Expr:
aaa=[
"2x2" => Expr(2*2)
]
然后我将使用 Eval Expr 计算参数内的所有表达式,并返回带有计算后的子表达式的表达式:
Eval Expr(
aaa=[
"2x2" => Expr(2*2)
]
)
它已经不起作用了 - 它不评估 Expr(2*2)
下一步是评估结果表达式:
Eval(
Eval Expr(
aaa=[
"2x2" => Expr(2*2)
]
)
)
但显然这是行不通的。
为什么它不起作用以及正确的方法是什么?
分享和交流结果回复:使用具有表达式求值结果的值创建关联数组好的了解了。 我认为它是特定于关联数组的,但看起来它是特定于语法的:)
回复:使用具有表达式求值结果的值创建关联数组@Craige_Hales很高兴知道!听起来您对此有一些幕后开发经验!
回复:使用具有表达式求值结果的值创建关联数组
为什么不起作用
方括号形式是编译时常量,对于数组和关联数组都是如此。 方括号之间的常量在运行时被克隆并存储到 aaa 中。
@ErraticAttack我也会这样做。
回复:使用具有表达式求值结果的值创建关联数组如果不是不一致,JMP 就什么都不是。您可以通过列表来完成,这就是我在这些情况下所做的:
val1 = "Steve";
val2 = "The";
val3 = "Turtle";
aaa = Associative Array(
{"key1", "key2", "key3"},
Eval List( {val1, val2, val3} )
);
show( aaa )