julia笔记:函数

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

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

2 匿名函数(两种方法)

function (x,y)
           x + y
       end
##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->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
'''

4.1 do函数与文件写入

open("outfile", "w") do io
    write(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
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值