Elixir case-do构造和绑定

时间:2016-08-09 04:45:10

标签: elixir

我正在学习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>

1 个答案:

答案 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
相关问题