我正在学习Elixir并且遇到了一个概念问题。请考虑以下代码:
iex(3)> case 1 do
...(3)> x -> "x exists"
...(3)> _ -> "something exists"
...(3)> end
"x exists"
iex(4)> x
** (CompileError) iex:4: undefined function x/0
变量x
尚未绑定到任何内容,那么第一个case
表达式如何匹配?我认为可能是因为Elixir在分配时与Erlang不同,因此x
可能会在过程中受到约束,但命令#4显示x
不受约束。< / p>
答案 0 :(得分:1)
case
表达式的模式或正文中绑定的值仅在该分支内可用。
case 1 do
x -> IO.puts(x)
end
将打印
1
如果您想从case
中提取值,则可以存储case
来电的返回值:
x = case 2 do
1 -> 2
2 -> 3
_ -> 0
end
x #=> 3