【问题标题】:Why doesn't assigning a variable to an array yield expected results in Ruby?为什么在 Ruby 中将变量分配给数组不会产生预期的结果?
【发布时间】:2013-05-09 08:52:07
【问题描述】:

使用 IRB,我测试了以下内容:

C:\Pickaxe>irb
irb(main):001:0> list_of_strings = %w{ a list of strings in an array }
=> ["a", "list", "of", "strings", "in", "an", "array"]
irb(main):002:0> a, b, c = list_of_strings
=> ["a", "list", "of", "strings", "in", "an", "array"]
irb(main):003:0> a
=> "a"
irb(main):004:0> b
=> "list"
irb(main):005:0> c
=> "of"
irb(main):006:0>

在我开发的其他语言中,设置a, b, c = dabc 的值全部设置为等于d。在这里,它们被设置为数组中的连续元素。

我不明白它是如何或为什么起作用的。有人能解释一下这个问题吗?

【问题讨论】:

  • 看看this的回答。
  • 啊,谢谢 Squiguy。有没有一种方法可以将 a、b 和 c 的值分配给整个数组,而不必在多行上执行?
  • 你的意思是像a = b = c = list_of_strings这样的东西吗?
  • @squiguy:在 Ruby 中解构绑定的工作方式与在其他所有语言中的工作方式几乎完全相同。不知道这有什么不同。
  • @squiguy,“我的意思是这种语言总是吹嘘它‘对程序员有意义’。”Matz,说“The principle of least surprise means principle of least my surprise. And it means the principle of least surprise after you learn Ruby very well.”就个人而言,在许多其他语言之后,我发现 Ruby 我停下来思考我在做什么时,要非常直观。作为人类,我有时这样做,这让我感到惊讶。

标签: ruby-on-rails ruby arrays variable-assignment irb


【解决方案1】:

这就是 Ruby 中数组赋值的工作方式。它试图变得聪明一点,将数组的每个索引项分配给赋值左侧的那个变量=

【讨论】:

  • 我不知道为什么这会令人惊讶。 Perl 做同样的事情,它已经存在了很多年,它是一种非常主流的语言。
猜你喜欢
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多