julia - Julia 中事件驱动代码的匿名函数和 foreach 用法
问题描述
我目前正在关注 Aurelien Geron ( https://github.com/ageron/julia_notebooks ) 的 Julia for pythonistas notebook,我对匿名函数章节与以下代码有点困惑:
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))
主要是我看不到如何on_click()
得到event
from click()
。任何人都可以对此有所了解吗?
解决方案
可能不明显的是如何handlers
填充数组,即通过应用on_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
构造的所有处理程序。
推荐阅读
- sql - CASE 表达式中的 AND 条件是否短路?
- javascript - POST 控制器 - 值绑定为 null
- r - 如何将 R 中的折线图和条形图与两个不同的 y 轴结合起来
- powershell - Powershell 5:ConvertTo-Csv CSV 在某些但不是所有列中带有引号
- python - 是否可以通过 Rosetta for arm 运行终端?
- python - 使用 serializers.FileField 上传 Django Rest Framework 多字段
- email - 您如何使用 cypress 测试确认电子邮件?
- angular - 问题:FromControl 不显示值
- mongodb - 如果一个字段匹配,则合并记录,但如果另一个字段在两个记录中都有值,则不合并 MongoDb 聚合
- html - 使用卡片 BootStrap4 将 flex 扩展到全宽