gpt4 book ai didi

elixir - 为什么 Elixir 允许带有 undefined variable 的闭包?

转载 作者:行者123 更新时间:2023-12-02 09:56:51 26 4
gpt4 key购买 nike

我能理解这一点:

iex(7)> outside_val = 5
5
iex(8)> print = fn() -> IO.puts(outside_val) end
#Function<20.90072148/0 in :erl_eval.expr/5>
iex(9)> print.()
5
:ok

我不太明白的是为什么 Elixir 允许定义 print 函数,即使没有定义 Outside_val 并且稍后只会出错?无论如何,在定义闭包之后就无法传入 'outside_val',所以 Elixir 在创建过程中检查变量是否存在不是更好吗?

我的意思是这样的:

iex(2)> print = fn () -> IO.puts(outside_val) end
#Function<20.90072148/0 in :erl_eval.expr/5>
iex(3)> outside_val = 5
5
iex(4)> print.()
** (RuntimeError) undefined function: outside_val/0

最佳答案

这是 Elixir 中的一个错误,将在 v1.1 中修复(已在 master 分支中):

Interactive Elixir (1.1.0-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> print = fn () -> IO.puts(outside_val) end
** (CompileError) iex:1: undefined function outside_val/0

当前实现延迟了调用 IEx.Helpers 中函数的扩展。在master中,我们只需导入IEx.Helpers,因此以后不再需要扩展outside_val

关于elixir - 为什么 Elixir 允许带有 undefined variable 的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com