如何解决我们可以在 Elixir 中更改不可变变量我们不能说重新绑定等于可变吗?
我是函数语言的新手。我练习了一些东西,但我想知道一件事。 Elixir 告诉我一切都是不可变的,但我可以改变 Elixir 中的变量。有什么我不知道的吗? 我的例子是
defmodule Practise do
def Boxes(total) do
size_50 = div(total,50)
total = rem(total,50)
{"big: #{size_50} total: #{total}"}
end
end
我可以在同名函数中使用新值更改总变量。所以我认为它是不可变的。正确吗?
解决方法
重用变量名(通常称为重新绑定)在 Elixir 中只是一种方便——它相当于使用一个临时变量但名称相同。对原始 total
的引用在函数 Practice.boxes
的范围内丢失。但这对您来说并不重要,因为您不再需要它 - 您只需要新的。
这是 Elixir 的设计者对命令式编程做出的罕见让步。事实上,像 x = x + 1
这样的表达式可能会被误认为是模式匹配短语。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。