【问题标题】:Ruby * operator before array [duplicate]数组前的Ruby *运算符[重复]
【发布时间】:2013-01-02 22:13:42
【问题描述】:

可能重复:
Understanding ruby splat in ranges and arrays

谁能告诉我以下代码中 * 的作用?

line = "name=yabbi;language=ruby;"
Hash[*line.split(/=|;/)]

谢谢。

【问题讨论】:

    标签: ruby hash


    【解决方案1】:

    * 是 splat 运算符。它用于将数组拆分为参数列表。

    line.split(/=|;/) 返回一个数组。要创建 Hash,必须将数组的每个元素作为单独的参数传递。

    【讨论】:

    • 谢谢!只是为了让我清楚,它真正要做的就是将该数组转换为参数的“列表”,以便哈希可以接受它(无论如何,在这种情况下,它似乎有很多用途)?
    • 是的。 Hash[] 不接受数组作为参数,所以我们必须将元素“分解”成单独的参数。
    【解决方案2】:

    这是一个splat operator 阅读它。当您想要拆分数组以用作函数的参数时,您经常会看到它使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-06
      • 2012-03-18
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 2013-12-02
      • 2011-03-10
      相关资源
      最近更新 更多