目前正尝试理解 Elixir 中的 "^" 运算符。
当您对重新绑定变量没有兴趣,而是想匹配其匹配之前的值时,可以使用引用运算符 ^:
来源 - http://elixir-lang.org/getting_started/4.html
有了这个想法,您可以像这样附加一个新值到一个符号上:
iex> x = 1 # Outputs "1"
iex> x = 2 # Outputs "2"
我还可以做:
iex> x = x + 1 # Outputs "3"!
所以我的第一个问题是:Elixir变量可变吗? 看起来好像是这样的...但在一个函数式编程语言中应该可以实现吗?
现在我们来谈 "^" 运算符...
iex> x = 1 # Outputs "1"
iex> x = 2 # Outputs "2"
iex> x = 1 # Outputs "1"
iex> ^x = 2 # "MatchError"
iex> ^x = 1 # Outputs "1"
我认为 "^" 的作用是将 "x" 锁定到其最后绑定的值。就这么简单吗? 为什么不像 Erlang 本身一样确保所有的 'matches'/assignments 都是不可变的呢?
我刚刚才开始适应它...