关于函数中的匿名函数的调用问题

看到文档 9.5 匿名函数

x -> x^2 + 2x - 1

等效于

function (x)
    x^2 + 2x - 1
end

也了解到,匿名函数作为传参时比较方便

1.我想知道案例中给的

get(dict, key) do
    time()
end

等效于

get(()->time(), dict, key)

是想表达什么

2.我想知道 无参函数 ()-> 的作用,以及调用

 ()->

还看到有这样的用法 https://discourse.juliacn.com/t/topic/560

function Person(age)
    getAge() = age
    ()->(age;getAge)
end

p = Person("run", 10)
p.age
p.getAge()

谢谢您的回答!

是想表达什么

可能这个的重点是 do(?

2.我想知道 无参函数 ()-> 的作用,以及调用

同上,()->expr 等价于

function()
    expr
end
function Person(age)
    getAge() = age
    ()->(age;getAge)
end

p = Person("run", 10)
p.age
p.getAge()

虽然但是,这个代码不能运行啊

哦,我明白你意思了。这个代码定义了一些局部函数,而最后一个函数作为返回值,使得可以从外部触及这些东西。

julia> y=(w)->(()->(w;))
#13 (generic function with 1 method)

julia> o=y(5)
#14 (generic function with 1 method)

julia> o.w
5

这应该是什么奇怪的特性,但是正常人谁这么写啊

ლ(╹◡╹ლ ) 好谢谢回答!

原来是按返回值来理解,很奇怪的写法哇
所以说这个无参匿名函数其实很少应用对么,没想到能用在什么地方

Example from with_logger:

# 将 @info 写入到文件
io = open("log.txt", "w+")
logger = SimpleLogger(io)
with_logger(logger) do
    @info("a context specific log message")
end

不是这样的,很少应用的是最后那种东西

再贴个例子

julia> cd("D:/") do
           readdir()
       end
1 个赞

备案号:京ICP备17009874号-2