function f(x,y)
x + y
end
#f (generic function with 1 method)
f(x,y) = x + y
#f(x,y) = x + y
function (x,y)
x + y
end
##3 (generic function with 1 method)
(x,y)->x + y
##5 (generic function with 1 method)
比如,考虑在具有多种情况的函数上调用map
map(x->begin
if x < 0 && iseven(x)
return 0
elseif x == 0
return 1
else
return x
end
end,
[1,0,-1])
'''
3-element Vector{Int64}:
1
1
-1
'''
当然可以先定义函数f,然后将f送入map中
function f(x)
begin
if x < 0 && iseven(x)
return 0
elseif x == 0
return 1
else
return x
end
end
end
map(f,[1,0,-1])
'''
3-element Vector{Int64}:
1
1
-1
'''
还有一种方法是使用保留字do
do x 语法创建一个带有参数 x 的匿名函数,并将其作为第一个参数传递给 map
map([1,0,-1]) do x
if x < 0 && iseven(x)
return 0
elseif x == 0
return 1
else
return x
end
end
'''
3-element Vector{Int64}:
1
1
-1
'''
open("outfile", "w") do io
write(io, data)
end
do io
是一个使用 do
语法的块结构。这里,文件被打开并传递给后面的代码块,该代码块可以使用变量 io
来引用这个打开的文件。do
语法的好处是,代码块结束时,文件会自动关闭,这意味着你不需要显式地调用 close(io)
。把一个函数作用到前一个函数的输出上
["a", "list", "of", "strings"] .|> uppercase
'''
4-element Vector{String}:
"A"
"LIST"
"OF"
"STRINGS"
'''
["a", "list", "of", "strings"] .|> uppercase .|>reverse
'''
4-element Vector{String}:
"A"
"TSIL"
"FO"
"SGNIRTS"
'''
["a", "list", "of", "strings"] .|> [uppercase, reverse, titlecase, length]
'''
4-element Vector{Any}:
"A"
"tsil"
"Of"
7
'''