热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么有些变量会自动绑定到Elixir中的其他值?防爆.案件

如何解决《为什么有些变量会自动绑定到Elixir中的其他值?防爆.案件》经验,为你挑选了1个好方法。

我正在学习Elixir,我很好奇为什么会发生以下情况:

iex(4)> case {:one, :two} do
...(4)>   {:four, :five} ->
...(4)>     "This won't match"
...(4)>   {:one, x} ->
...(4)>     "This will match and bind `x` to `:two`"
...(4)>   _ ->
...(4)>     "This will match any value"
...(4)> end
"This will match and bind `x` to `:two`"

因此,如果在"模式匹配"示例中,为什么空变量会x自动绑定到原子:two并提供正匹配?这是第一次运行时x不相等.:twocase

我只是没有理解究竟发生了什么.

谢谢.



1> Pascal..:

子句中的模式匹配(大小写或函数)执行与{:one, x} = {:one, :two}(也是模式匹配)相同的操作.在第二种情况下,很明显您要测试2个表达式是否匹配,并且如果先前未绑定,则要绑定变量x.唯一的区别是,如果匹配在子句中失败(例如{:four, :five} = {:one, :two}),如果任何前一个子句抛出异常,它将尝试下一个子句.

它是一个非常强大的功能,因为它使用非常少的行执行大量操作并使代码易于阅读.


推荐阅读
author-avatar
潜伏在人间_144
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有