- 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
- '''