【问题标题】:Elixir case-do construct and bindingElixir case-do 构造和绑定
【发布时间】:2016-08-09 12:52:36
【问题描述】:

我正在学习 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 未绑定。

【问题讨论】:

    标签: elixir


    【解决方案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
    

    【讨论】:

    • 甜蜜!只要允许,我就会接受这个作为答案。 :-)
    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多