今天我在研究Rails代码时偶然发现了这段代码:new_date(*::Date._parse(string, false).values_at(:year, :mon, :mday)) *::Date 中的星号双冒号(或称为splat-double-colon)有什么作用? 很可能与特定命名空间下的Date类的作用域有关...但它足够必要,以至于作者包含它而不仅仅使用标准的Date类。
我读错了代码,它根本不是 "*::" 运算符。 这里是正在发生的事情: 在全局范围内查找 Date 类 (::Date) 调用 _parse() 获取值的哈希表 调用 values_at 把哈希表转换成数组 使用星号运算符将数组转换为方法调用的多个参数 调用 new_date(),传入数组元素作为其 year、mon 和 mday 参数。 星号运算符和双冒号运算符之间缺少空格让它变得令人困惑。 :-\
::
。 - sepp2k