我正在探索Elixir,并且遇到了有关下划线的奇怪事情。我们用它来搭配任何变量并丢弃,因为药剂认为永久绑定:Elixir中下划线'_`的行为
iex(38)> _
** (CompileError) iex:38: unbound variable _
但是当我分配的东西强调,价值得到呼应它在正常的变量绑定的情况下,以同样的方式:
iex(38)> x = 10
10
iex(39)> _ = 10
10
什么是壳在第二种情况下呼应10
是什么意思?
我正在探索Elixir,并且遇到了有关下划线的奇怪事情。我们用它来搭配任何变量并丢弃,因为药剂认为永久绑定:Elixir中下划线'_`的行为
iex(38)> _
** (CompileError) iex:38: unbound variable _
但是当我分配的东西强调,价值得到呼应它在正常的变量绑定的情况下,以同样的方式:
iex(38)> x = 10
10
iex(39)> _ = 10
10
什么是壳在第二种情况下呼应10
是什么意思?
=
运算符在完成模式匹配后返回RHS的值。在这种情况下,10
被忽略,因为它被分配到_
,但整个表达式的返回值仍然为10
。
10
是表达式_ = 10
的结果。
Elixir中的所有内容都是表达式,所以一切都会返回一个值。
通常在Elixir中,当你在模式匹配中使用_时,你并不在意这个值。
这里返回表达式的值,即10
。
Elixir中的每个表达式都会返回一个值。模式匹配时,它会返回右侧的值。
_ = 10 # return 10 as RHS value
考虑到这一点,您可以将匹配链接在一起。
iex(1)> {date, time} = local_time = :calendar.local_time
{{2016, 8, 9}, {7, 43, 11}}
iex(2)> date
{2016, 8, 9}
iex(3)> time
{7, 43, 11}
iex(4)> local_time
{{2016, 8, 9}, {7, 43, 11}}
谢谢!这个答案更相关,因为它指定返回的值是右边的。 – dotslash