Gre*_*per 7 wolfram-mathematica mathematica-8
知道如何让这个工作吗?
y = {}; Table[Button[x, AppendTo[y, Evaluate[x]]], {x, 5}]
Run Code Online (Sandbox Code Playgroud)
结果:单击[ 1],单击[ 2],获取{6,6}
我轻视实际的任务,但我们的目标是建立一个内部的按钮做什么Map或Table或ParallelTable.
请帮忙!
编辑想
出来...... Evaluate只在第一级工作.在这里,它太深了.所以我用过ReplaceRule:
Remove[sub]; y = {}; Table[Button[x, AppendTo[y, sub]] /. sub -> x, {x, 5}]
Run Code Online (Sandbox Code Playgroud)
WRe*_*ach 10
这是一份工作With. With用于将计算表达式插入到任何深度的另一个表达式中 - 甚至是表达式中未立即计算的部分,如第二个参数Button:
y = {}; Table[With[{x = i}, Button[x, AppendTo[y, x]]], {i, 5}]
Run Code Online (Sandbox Code Playgroud)
在这种简单的情况下,有些人(包括我自己)更愿意为和变量使用相同的符号(x在本例中),因此:WithTable
y = {}; Table[With[{x = x}, Button[x, AppendTo[y, x]]], {x, 5}]
Run Code Online (Sandbox Code Playgroud)
替换规则和纯函数提供了简洁的替代方案With.例如:
y={}; Range[5] /. x_Integer :> Button[x, AppendTo[y, x]]
Run Code Online (Sandbox Code Playgroud)
要么
y = {}; Replace[Range[5], x_ :> Button[x, AppendTo[y, x]], {1}]
Run Code Online (Sandbox Code Playgroud)
要么
y = {}; Array[Button[#, AppendTo[y, #]] &, {5}]
Run Code Online (Sandbox Code Playgroud)
要么
y = {}; Button[#, AppendTo[y, #]] & /@ Range[5]
Run Code Online (Sandbox Code Playgroud)
有关比较这些技术的另一个示例,请参阅此处的帖子,其中它们适用于创建嵌入在其主体(闭包)中的参数的纯函数列表的问题.
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |