第 13 章:函数和命令

Previous Next


在这章中,我们将介绍所有内置函数和系统命令。它们的主要区别是,所有的函数有返回值,而系统命令不返回数值。


语法


对于一个参数的函数,我们使用 X 作为参数。对于两个参数的函数,我们使用 X 和 Y 分别作为第一个和第二个参数。如果没有说明,X 或 Y 表示标量,向量,矩阵,字典或表的对象。我们有一些需要一个标量作为参数之一的函数,比如 take, rand, norm。对于这些情况,我们使用小写字母,比如 "a", "b"。[ ] 里的内容是可选项。


一个参数的函数语法:


(1) <function>(X)

// 标准函数调用


(2) <function> X

// 将函数名放在参数 X 前时,X 两边的括号可以省略。对于嵌套函数调用,这种做法不推荐。


(3) X.<function>()

// 当 X 是一个对象时,X 两边的括号可以省略。对于嵌套函数调用,这种做法更合适。


两个参数的函数语法:


(1) <function>(X, Y)

// 标准函数调用


(2) X <function> Y

// 将函数名放在两个参数之间。对于嵌套函数调用,这种做法不推荐。


(3) X.<function> (Y)

// 当 X 是一个对象时,X 两边的括号可以省略。


可以对常量和变量用面向对象的风格调用一个函数。


为了简明,我们在这章中,对所以一元和两个参数的函数,都只将介绍第一种调用形式,即 <function>(X) 或 <function>(Y)。


函数调用示例



// 3 种调用函数 log 的方式

>log(10);

2.302585

>log 10;

2.302585

>(10).log();                        

2.302585

// 为了将常数 10 视为一个对象,必须强制给它加一对括号


>x = 5 3 1 10;

>log(x);

[1.609438,1.098612,0,2.302585]

>log x;

[1.609438,1.098612,0,2.302585]

>x.log();                        

[1.609438,1.098612,0,2.302585]

// 括号可以省略,因为 x 是一个向量对象

>(5 3 1 10).log()                

[1.609438,1.098612,0,2.302585]

// 为了将向量常数 5 3 1 10 视为一个向量对象,必须强制给它加一对括号


>sin(add(log(5),7));                

0.727959



性能提示


大多数二元运算符/函数不要求两个参数是同样的数据类型。系统会用最佳方式转换类型。但不推荐使用不同的数据类型,因为大量的类型转换会造成性能的损耗。