函数
函数是一个将参数值元组映射到返回值的对象。
定义
function <函数名>(<参数表[ :: 参数类型]>, …)[ :: 输出类型]
<函数体>
end
紧凑型:f(x,y) = x + y
最后一行默认返回值,无需return。不想返回任何值,在最后一行写上nothing
操作符也是函数
julia> +(1, 2, 3)
6
给函数添加说明
"simple add function"
function add(x, y)
x + y
end
在help下输入add或用@doc add查看。
匿名函数
map用法:为数组的每个元素应用一次函数,然后返回一个包含结果值的新数组
julia> map(x -> x^2 + 2x - 1, [1, 3, -1])
3-element Array{Int64,1}:
2
14
-2
多返回值与参数解构
函数最后一行用逗号分隔,将包装为tuple返回
可以进行元组解构:
julia> x, y = foo(2,3)
(5, 6)
julia> x
5
julia> y
6
可变参数
julia> function f(x...)
len = length(x)
len, x[len]
end
返回输入参数的个数和最后一个参数
默认参数
给定默认值,默认参数只能写在最后。
julia> function f(x,y=1)
x + y
end
关键字参数
调用更可读,因为我们能以其意义标记参数。也使得大量参数的任意子集都能以任意次序传递。
具有关键字参数的函数在签名中使用分号定义:
julia> function add(x;y=1,z=2)
x + y + z
end
julia> add(x=1, y=2, z=3) # ERROR
julia> add(1, y=2, z=4)
7
Note. 分号之前的参数不能写参数名,且必须按顺序填写。分号后面的使用关键字填写。
方法
即重载。可以用函数名/符号或methods(函数名/符号)查看方法数。