加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 绑定与分配

发布时间:2020-12-17 03:07:57 所属栏目:百科 来源:网络整理
导读:我已经阅读了许多关于赋值和绑定之间差异的文章,但它还没有点击(特别是在命令式语言与没有变异的语境中). 我在IRC问过,有人提到这两个例子说明了区别,但后来我不得不去看,我没有看到完整的解释. 有人可以详细解释这是如何/为什么这样有效,以帮助说明差异? r
我已经阅读了许多关于赋值和绑定之间差异的文章,但它还没有点击(特别是在命令式语言与没有变异的语境中).

我在IRC问过,有人提到这两个例子说明了区别,但后来我不得不去看,我没有看到完整的解释.

有人可以详细解释这是如何/为什么这样有效,以帮助说明差异?

ruby

x = 1; f = lambda { x }; x = 2; f.call
#=> 2

x = 1; f = fn -> x end; x = 2; f.()
#=> 1

解决方法

我以前听过这个解释,看起来很不错:

You can think of binding as a label on a suitcase,and assignment as a
suitcase.

在其他语言中,如果您有作业,则更像是在行李箱中放置一个值.实际上,您可以更改行李箱中的值并输入不同的值.

如果你有一个带有价值的行李箱,在Elixir中,你会在上面放一个标签.您可以更改标签,但行李箱中的值仍然相同.

所以,举例来说:

iex(1)> x = 1
iex(2)> f = fn -> x end
iex(3)> x = 2
iex(4)> f.()
1

>你有一个装有1的手提箱,你将它标记为x.
>然后你说,“在这里,功能先生,我希望你在我打电话给你时告诉我这个行李箱里有什么东西.”
>然后,你带着1个标签从行李箱中取出,放在另一个装有2个行李箱的行李箱里.
>然后你说“嘿,那个行李箱里有什么东西?”

他会说“1”,因为行李箱没变.虽然,你把它的标签从它上面拿出来放在不同的行李箱上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读