在 Mathematica 中,是否有任何优雅的方法来映射变量名称列表?
In Mathematica, is there any elegant way to map over a list of variable names?
例如,创建编辑给定变量的滑块的以下规则:
EditorLine[stat_] := {
Labeled[Slider[Dynamic[stat], {1, 20, 1}],
{SymbolName[Unevaluated[stat]]}, {Left}], Dynamic[stat]}
SetAttributes[EditorLine, HoldFirst]
这适用于 EditorLine[x]
,但使用映射 - 例如,EditorLine /@ {x,y,z}
会出错,因为映射函数会评估变量名称,因此它们不会被保留。
这可以通过编写 EditorLine /@ {Unevaluated[x],Unevaluated[y],Unevaluated[z]}
来完成,但如果我想像那样编写重复的函数调用,我就不会使用映射!
有更好的方法吗?
这也行得通:
EditorLine /@ Unevaluated[{x, y, z}]
如果添加 Listable
属性,则更短:
EditorLine[{x, y, z}]
例如,创建编辑给定变量的滑块的以下规则:
EditorLine[stat_] := {
Labeled[Slider[Dynamic[stat], {1, 20, 1}],
{SymbolName[Unevaluated[stat]]}, {Left}], Dynamic[stat]}
SetAttributes[EditorLine, HoldFirst]
这适用于 EditorLine[x]
,但使用映射 - 例如,EditorLine /@ {x,y,z}
会出错,因为映射函数会评估变量名称,因此它们不会被保留。
这可以通过编写 EditorLine /@ {Unevaluated[x],Unevaluated[y],Unevaluated[z]}
来完成,但如果我想像那样编写重复的函数调用,我就不会使用映射!
有更好的方法吗?
这也行得通:
EditorLine /@ Unevaluated[{x, y, z}]
如果添加 Listable
属性,则更短:
EditorLine[{x, y, z}]