使用具有表達式求值結果的值建立關聯數組像往常一樣,我在 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 )