Wolfram Computation Meets Knowledge

Wolfram 语言:
快速编程入门

显示附加备注:
全部选择 
开始使用

函数定义 视频

在 Wolfram 语言中,函数定义只是给出模式变换规则的赋值.

Java 程序员备注:

与对象导向的 Java 语言不同,Wolfram 语言函数不受类型等级限制.

定义一个带有命名为 xy 的两个参数的函数:

In[1]:=1
f[x_, y_] := x + y

Java 程序员备注:

在 Wolfram 语言的基本函数定义中,参数名称后跟随 _ (“空白”). 与 Java 方法不同,Wolfram 语言函数默认接受任何格式的数据.

Python 程序员备注:

在 Wolfram 语言的基本函数定义中,参数名称后跟随 _ (“空白”),允许参数与任意符号式模式一致. 实现了强大且灵活的函数定义,这对于默认的 Python 是不可能的.


使用定义:

In[2]:=2
f[4, a]
Out[2]=2

清除定义:

In[3]:=3
Clear[f]

函数定义可以按序指定其值:

In[1]:=1
f[1] = 2
Out[1]=1

In[2]:=2
f[2] = 3
Out[2]=2

任何未定义的,还保留原样:

In[3]:=3
{f[1], f[2], f[3], f[4]}
Out[3]=3

您可以使用 /; 限制定义,使其只适用于某种条件:

In[4]:=4
f[x_, y_] := x - y /; x > y

Java 程序员备注:

在 Wolfram 语言中使用 /; 与缩短的 If 语句相同.

Python 程序员备注:

在 Wolfram 语言中可使用与 if 语句相同的 /; 应用于函数,允许函数自由根据条件自动选择定义.


您可以定义任何左手边的变换“解构”参数的便捷方式:

In[1]:=1
f[{x_, y_}, z_] := {x + z, y - z}

In[2]:=2
f[{5, 6}, q]
Out[2]=2

Wolfram 语言没有所谓的类型;一切都是符号表达式. 表达式的“标头”可被作为普遍意义上的类型标志符使用.

使用一个“u 对象”或“v 对象”,给出 f 的不同定义:

In[1]:=1
f[u[x_]] := x + 1

In[2]:=2
f[v[x_]] := x - 1

Java 程序员备注:

这属于对不同类型数据重载 Java 方法类似,但 Wolfram 语言函数可根据其参数的符号式结构进行更泛化的重载.

Python 程序员备注:

Wolfram 语言函数可使用内置的模式匹配来根据其任意参数的符号结构来更改行为. 在 Python 中则需要相对复杂的自定义代码或第三方程序库.

快速参考:定义变量和函数


以下哪项定义两个数字相加的函数 f(例如:f[3, 4] == 7)?


以下哪项的定义会将 {f[1], f[2], f[3], f[4]} 计算为 {f[1], 5, 6, f[4]}


如果函数 f 定义为 f[x_, y_] := x + y,那么以下哪项为 f[a, b] 的值?

© 2019 Wolfram. All rights reserved.