我今天在探索Rails代码并偶然发现了this snippet:
new_date(*::Date._parse(string, false).values_at(:year, :mon, :mday))
*::Date
中的星号 - 双冒号(或splat-le-colon冒号)有什么作用?
据推测,它与特定命名空间的Date
类的范围有关......但是作者必须包含它而不是仅仅使用标准的Date
类。< / p>
答案 0 :(得分:13)
我读错了代码;它根本不是“* ::”操作符。
以下是发生的事情:
Date
类(::Date
)_parse()
以获取值的哈希值values_at
将哈希值转换为数组new_date()
,将数组元素传递给year
,mon
和mday
个参数。 *
和::
运营商之间缺乏空间让人感到困惑。 : - \