julia中事件驱动代码的Annonymous函数和foreach用法
我目前正在关注Aurelian Geron()的Julia for pythonistas notebook,我对annonymous functions一章中的以下代码有点困惑:julia中事件驱动代码的Annonymous函数和foreach用法,julia,Julia,我目前正在关注Aurelian Geron()的Julia for pythonistas notebook,我对annonymous functions一章中的以下代码有点困惑: handlers = [] on_click(handler) = push!(handlers, handler) click(event) = foreach(handler->handler(event), handlers) on_click() do event println(&quo
handlers = []
on_click(handler) = push!(handlers, handler)
click(event) = foreach(handler->handler(event), handlers)
on_click() do event
println("Mouse clicked at $event")
end
on_click() do event
println("Beep.")
end
click((x=50, y=20))
click((x=120, y=10))
主要是我看不到如何从
click()
获取事件。有人能解释一下吗?可能不明显的是处理程序数组是如何填充的,也就是说,在单击()时应用
两次
on_click(handler) = push!(handlers, handler)
定义一个添加处理程序的函数,而
on_click() do event
println("Mouse clicked at $event")
end
on_click() do event
println("Beep.")
end
调用这个新定义的函数两次。do
符号稍微隐藏了这一点,但基本上可以转化为:
push!(handlers, event -> println("Mouse clicked at $event"))
push!(handlers, event -> println("Beep."))
调用click()
时,所提供的元素(例如(x=50,y=29)
将使用foreach
构造传递给所有处理程序