Julia 函数高级特性与参数传递详解
1. 一等对象
在 Julia 中,函数是一等对象,这意味着它们可以被赋值给其他标识符、作为参数传递给其他函数、作为其他函数的返回值、存储在集合中,还能在运行时应用(映射)到一组值上。
参数列表由一组虚拟变量组成,使用 ()
表示法的数据结构称为元组。默认情况下,参数类型为 {Any}
,但也可以指定显式的参数类型,这有助于编译器分配内存并优化生成的代码。
例如:
sq(x) = x*x;
sq("Hello") ; # => HelloHello
这里 sq()
函数对字符串也适用,因为 *
运算符用于字符串拼接。这是 Julia 使用多重派发重载函数的一个例子。
也可以重载字符串的 +
运算符,但由于它是 Base
的一部分,需要先导入:
import Base.+
+(s1::String,s2::String) = s1*s2; # or else string(s1,s2)
"Hello"+" World" # "Hello World"
要将函数应用到一组值上,可以使用 map()
构造: