结合性决定了当有一系列同一优先级的操作符时,它们的求值顺序。在Scala中,绝大部分的操作符都是左结合(从左到右)的,除了:1. 以冒号:结尾的操作符;2. 赋值操作符。而且,在右结合时,二元操作符的参数顺序也发生了变化:二元操作符是其第二个参数的方法。
// ::操作符用来构造列表
1 :: 2 :: Nil // Nil表示空列表
// 上面表达式表示:
1 :: (2 :: Nil)
// 如果变为完整的方法调用:
(Nil.::(2)).::(1) // 注意右结合时参数顺序的变化
// ::操作符用来构造列表
1 :: 2 :: Nil // Nil表示空列表
// 上面表达式表示:
1 :: (2 :: Nil)
// 如果变为完整的方法调用:
(Nil.::(2)).::(1) // 注意右结合时参数顺序的变化