WOLFRAM 语言教程

在计算过程中收集表达式

在许多计算中,我们只关注作为输入的表达式通过计算产生的最终结果. 但有时,我们也想收集在计算过程中产生的表达式. 这可以通过使用 SowReap 来实现.

Sow[val]对最接近的 Reap 所包围的值用 val 进行散布
Reap[expr]计算 expr,只返回使用 Sow 散布的值的列表

使用 SowReap.

这里输出仅包含最终结果.
In[1]:=
Click for copyable input
Out[1]=
这里给出两个中间结果.
In[2]:=
Click for copyable input
Out[2]=
这里计算和式,并收集所有偶数项.
In[3]:=
Click for copyable input
Out[3]=

ThrowCatch 类似,SowReap 可以在计算中任何位置使用.

这里定义一个可以使用 Sow 的函数.
In[4]:=
Click for copyable input
这里对函数进行嵌套,并获取所有小于1/2的情况.
In[5]:=
Click for copyable input
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).

这里只获取使用了标记  散布的值.
In[6]:=
Click for copyable input
Out[6]=
这里 使用标记 散布了两次.
In[7]:=
Click for copyable input
Out[7]=
使用不同标记散布的值总是出现在不同的子列表中.
In[8]:=
Click for copyable input
Out[8]=
这里对提取的标记的每个形式生成子列表.
In[9]:=
Click for copyable input
Out[9]=
这里对每个不同的标记和列表应用 .
In[10]:=
Click for copyable input
Out[10]=
标记可以成为计算的一部分.
In[11]:=
Click for copyable input
Out[11]=