【发布时间】:2010-11-12 20:55:20
【问题描述】:
我刚刚开始使用 Scala,并且刚刚了解了如何使方法右关联(与更传统的左关联相反在命令式面向对象语言中很常见)。
起初,当我在 Scala 中看到 cons 列表的示例代码时,我注意到每个示例的右侧总是有列表:
println(1 :: List(2, 3, 4))
newList = 42 :: originalList
但是,即使一遍又一遍地看到这个,我也没有多想,因为我(当时)不知道:: 是List 上的一个方法。我只是假设它是一个运算符(同样,在 Java 中的运算符意义上)并且关联性并不重要。 List 总是出现在示例代码的右侧似乎是巧合(我认为这可能只是“首选样式”)。
现在我知道了:它必须这样写,因为:: 是右结合的。
我的问题是,能够定义右关联方法有什么意义?
纯粹是出于审美原因,还是在某些情况下,右关联实际上比左关联有某种好处?
从我(新手)的角度来看,我真的不明白如何
1 :: myList
比
好myList :: 1
但这显然是一个微不足道的例子,我怀疑这是一个公平的比较。
【问题讨论】:
-
刚刚在我的回答中包含了您的 cmets,并附有一些示例来说明它们。
-
据我所知,这是为了让 Lisp 用户有宾至如归的感觉,纯粹是为了允许 :: 列表追加操作。
-
@skaffman 不,不是。阅读答案。
标签: scala operators operator-precedence