在计算过程中收集表达式
在许多计算中,我们只关注作为输入的表达式通过计算产生的最终结果. 但有时,我们也想收集在计算过程中产生的表达式. 这可以通过使用 Sow 和 Reap 来实现.
| Sow[val] | 对最接近的 Reap 所包围的值用 val 进行散布 |
| Reap[expr] | 计算 expr,只返回使用 Sow 散布的值的列表 |
使用 Sow 和 Reap.
| Out[1]= |  |
| Out[2]= |  |
| Out[3]= |  |
与 Throw 和 Catch 类似,Sow 和 Reap 可以在计算中任何位置使用.
| Out[5]= |  |
| Sow[val,tag] | 使用标记散布 val,以表明应该在什么时间提取 |
| Sow[val,{tag1,tag2,...}] | 对每一个 散布 val |
| Reap[expr,form] | 提取所有标记与 form 匹配的值 |
| Reap[expr,{form1,form2,...}] | 对每个 生成不同的列表 |
| Reap[expr,{form1,...},f] | 对每个不同的标记和列表,应用 f |
使用标记(tag)散布(sow)和提取(reap).
这里只获取使用了标记

散布的值.
| Out[6]= |  |
这里

使用标记

散布了两次.
| Out[7]= |  |
| Out[8]= |  |
| Out[9]= |  |
这里对每个不同的标记和列表应用

.
| Out[10]= |  |
| Out[11]= |  |