我正在通过Elixir入门文档,并遇到了一些我不理解输出的东西.在下面的例子中,我不明白为什么rest最终成为"llo"或者为什么第一个结果如何导致"你好"而不是"hehello".
iex> "he" <> rest = "hello"
"hello"
iex> rest
"llo"
Run Code Online (Sandbox Code Playgroud)
这是Elixir =工作方式的结果.这不评估为:
"he";
rest = "hello";
Run Code Online (Sandbox Code Playgroud)
不,相反,它会进行模式匹配.来自文档:
在本章中,我们将展示Elixir中的=运算符实际上是一个匹配运算符,以及如何使用它来模拟数据结构内部的匹配.
(强调我的.)我链接的章节解释了=Elixir中的符号与其他语言相比如何区别对待,并解释了您正在目睹的有些奇怪的行为.
该=标志必须有双方是平等的.已经看右侧,我们有一个值为"hello"的字符串.因此,左侧必须是一个字符串,也有值"你好".左侧的变量是休息."he" + rest = "hello".这个等式有一个独特的解决方案 - > "he" + "llo" = "hello".最后,我们可以得出结论rest = "llo".
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |