julia中事件驱动代码的Annonymous函数和foreach用法

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

我目前正在关注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("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
构造传递给所有处理程序