当前位置:首页 > 编程笔记 > 正文
已解决

julia笔记:函数

来自网友在路上 165865提问 提问时间:2023-10-22 22:24:10阅读次数: 65

最佳答案 问答题库658位专家为你答疑解惑

 1 函数的定义(两种方法)

function f(x,y)x + yend
#f (generic function with 1 method)
f(x,y) = x + y
#f(x,y) = x + y

2 匿名函数(两种方法)

function (x,y)x + yend
##3 (generic function with 1 method)
(x,y)->x + y
##5 (generic function with 1 method)

2.1 匿名函数应用:map

3 变参参数

  • “参数数量可变”的简称
  • 通过在最后一个参数后增加省略号来定义一个变参函数

4 函数参数中的do结构

  • 把函数作为参数传递给其他函数是一种强大的技术,但它的语法并不总是很方便
  • 当函数参数占据多行时,这样的调用便特别难以编写

比如,考虑在具有多种情况的函数上调用map

map(x->beginif x < 0 && iseven(x)return 0elseif x == 0return 1elsereturn xendend,[1,0,-1])
'''
3-element Vector{Int64}:11-1
'''

当然可以先定义函数f,然后将f送入map中

function f(x)beginif x < 0 && iseven(x)return 0elseif x == 0return 1elsereturn xendend
endmap(f,[1,0,-1])
'''
3-element Vector{Int64}:11-1
'''

还有一种方法是使用保留字do

do x 语法创建一个带有参数 x 的匿名函数,并将其作为第一个参数传递给 map

map([1,0,-1]) do xif x < 0 && iseven(x)return 0elseif x == 0return 1elsereturn xend
end
'''
3-element Vector{Int64}:11-1
'''

4.1 do函数与文件写入

open("outfile", "w") do iowrite(io, data)
end
  • do io 是一个使用 do 语法的块结构。这里,文件被打开并传递给后面的代码块,该代码块可以使用变量 io 来引用这个打开的文件
  • 使用 do 语法的好处是,代码块结束时,文件会自动关闭,这意味着你不需要显式地调用 close(io)

5 管道链式调用

把一个函数作用到前一个函数的输出上

5.1 和广播链式使用

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

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"julia笔记:函数":http://eshow365.cn/6-21934-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!