【问题标题】:What are starred variables in Ruby?什么是 Ruby 中的星号变量?
【发布时间】:2012-01-01 14:01:32
【问题描述】:

*arr 这样的星号变量是什么?

*arr = "sayuj"
=> ["sayuj"]

*arr = *%w{i am happy}
=> ["i", "am", "happy"]

*arr = %w{i am happy}
=> [["i", "am", "happy"]]

【问题讨论】:

  • 我删除了“星号”和变量标签。他们太模棱两可了。
  • @theTinMan:有“splat”标签。
  • 是的,有 0 个关注者。

标签: ruby arrays splat


【解决方案1】:

它被称为splat 运算符,它可以将元素收集到一个数组中(应用于未绑定的变量)或将数组拆分为单个元素(应用于数组)。

def bar(*a)
  a[1]
end

bar(1,2,3)
=> 2

def foo(a,b,c)
  b
end

foo(*[1,2,3])
=> 2

这有点过于简单,请阅读链接的帖子以获取更深入的信息。

【讨论】:

  • a = 1, 2, 3 => [1, 2, 3]; # 那么这里有什么区别呢?
  • ruby 将其视为一种特殊情况 - 重新阅读我的回答:我将第一个示例更改为您无法没有 splat 的内容。
  • 比较这些:a,b = 1,2,3,4;放 b; a,*b = 1,2,3,4;放b
  • 请交叉检查您的第一个示例。那是行不通的。您必须更改其中之一:def bar(*a) => def bar(a)bar([1, 2, 3]) => bar(1, 2, 3)
  • 我们应该在任何地方实时使用它吗?
猜你喜欢
  • 2018-01-24
  • 1970-01-01
  • 2011-05-09
  • 2014-01-11
  • 2012-12-20
  • 1970-01-01
  • 2016-06-14
  • 2011-05-18
  • 2010-12-15
相关资源
最近更新 更多