常用记号和表示惯例
一些内置函数可以采用选项(options). 每个选项具有一个名称,可以表示为一个符号,或者在一些情况下可以表示为一个字符串. 通过给出形如 name->value 或者 name:>value 的规则,设置选项. 这样的规则必须出现在函数的其它变量之后. 可以按任何顺序给出不同选项的规则. 如果用户不能对特定选项明确地给出规则,则使用该选项的默认设置.
Options[f] | 给出所有与 f 相关联的选项的默认值 |
Options[expr] | 给出在特定表达式中设置的选项 |
Options[expr,name] | 给出表达式中选项 name 的设置 |
AbsoluteOptions[expr,name] | 给出 name 的绝对设置,即使实际设置为 Automatic |
SetOptions[f,name->value,…] | 对与 f 相关联的选项设置默认规则 |
CurrentValue[name] | 给出前端选项 name 的选项设置;可以在赋值操作的左端使用来设置选项 |
n | 层 1 到 n |
Infinity | 层 1 到 Infinity |
{n} | 只包含层 n |
{n1,n2} | 层 n1 到 n2 |
Heads->True | 包含表达式的头部 |
Heads->False | 不包含表达式的头部 |
在表达式中,对应于非负整数 n 的层被定义为由 n 个索引指定的部分组成. 一个负的层数 -n 表示深度为 n 的表达式的所有部分. 表达式的深度,Depth[expr],是用来指明任意部分的索引的最大值,再加1. 除非设置选项 Heads->True,否则层的计数不包括表达式的头部. 层 0 是整个表达式. 层 -1 包含所有没有子部分的符号和其它对象.
由 {n1,n2} 指定的层的范围包括所有树中的既不在层 n1 之上,也不在层 n2 之下的部分. ni 不必具有相同的符号. 因此,例如,{2,-2} 指明了表达式树中出现在最高层以下,但叶子层以上的子表达式.
函数如 Apply、Cases、Count、FreeQ、Level、Map、MapIndexed、Position、Replace 和 Scan 使用层规格. 然而,注意,对于所有这些函数,默认层规格并不相同.
{imax} | 迭代 imax 次 |
{i,imax} | i 从 1 到 imax,步长为1 |
{i,imin,imax} | i 从 imin 到 imax,步长为1 |
{i,imin,imax,di} | i 从 imin 到 imax,步长为 di |
{i,list} | i 采取 list 中的连续值 |
{i,imin,imax},{j,jmin,jmax},… | i 从 imin 到 imax,并且对每个 i,j 从 jmin 到 jmax,等等. |
迭代参数 imin,imax 和 di 不必是整数. 变量 i 被赋于一系列值,这些值从 imin 开始,以步长 di 递增,当 i 的下一个值比 imax 大时停止. 迭代参数可以是任意的符号表达式,只要 (imax-imin)/di 是一个数.
关于计算迭代函数的过程,请参见 "计算".
Function[{x,…},body] | 局部参数 |
lhs->rhs 和 lhs:>rhs | 局部模式名 |
lhs=rhs 和 lhs:=rhs | 局部模式名 |
With[{x=x0,…},body] | 局部常数 |
Module[{x,…},body] | 局部变量 |
Block[{x,…},body] | 全局变量的局部值 |
DynamicModule[{x,…},body] | 在 Dynamic 接口中的局部变量 |
一些作用域构建语法作用域,这意味着特定变量或模式的字母实例被合适的值替代. 当要求局部变量名时,名称形如 xxx 的符号被重命名为 xxx$. 当计算嵌套作用域结构时,在内层作用域结构中自动产生新的符号,以避免与外层作用域结构的符号冲突.
Block 局部化全局变量的值. 即使当变量没有在函数体内明确出现时,在依赖全局变量的函数块中进行的任何计算都将使用在局部指定的值. Block 体可能也会对全局变量进行修改,但是任何修改都只持续到 Block 结束执行的时候.
在一个笔记本中,DynamicModule 对 DynamicModule 输出的每个实例局部化它的变量. 这意味着每个使用复制和粘贴创建的 DynamicModule 输出的每个拷贝都将使用它自己的局部变量.
- 它们具有属性 Listable,因此它们自动逐项作用于任何作为变量出现的列表.
- 它们具有属性 NumericFunction,因此当它们的变量是数值的时候,假定它们给出数值值.
- 在 NumericQ 中和其它地方作为数值量处理.
- 它们具有属性 Constant,因此在导数中作为常数处理.
为了尽量避免出现错误的赋值,大多数 Wolfram 语言内置对象具有属性 Protected. 如果用户想要对一个内置对象进行赋值,必须首先删除该属性. 可以调用函数 Unprotect 来实现该功能.
存在一些基本的 Wolfram 语言对象,用户绝对不可以自己对其赋值. 这些对象具有属性 Locked,以及Protected. Locked 属性防止用户对任何属性进行修改,并且也防止删除 Protected 属性.
函数如 StringMatchQ、Names 和 Remove 允许用户给出缩写的字符串模式(abbreviated string patterns),以及由 StringExpression 指定的完全字符串模式. 缩写的字符串模式可以包含某些元字符(metacharacters),元字符可以表示普通字符组成的序列.