微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们可以在 Elixir 中更改不可变变量我们不能说重新绑定等于可变吗?

如何解决我们可以在 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 举报,一经查实,本站将立刻删除。