在我一直在使用的Scala教程中,我一直看到以这种方式构造的列表:
(1 :: (2 :: Nil))
这个和非括号版本之间有区别吗?
1 :: 2 :: Nil
当Scala编译器编译时,两者都相同
(1 :: (2 :: Nil))
//res0: List[Int] = List(1, 2)
和
1 :: 2 :: Nil
//res1: List[Int] = List(1, 2)
使用的括号只是为了显示列表中的前缀和顺序,因为Nil
是最后一个元素。
他们是一样的。可以添加括号来说明操作顺序,但它们不会改变任何内容。事实上,它们毫无意义,因为没有其他操作顺序是可能的。在两种情况下,中缀(即无点)符号都脱糖至以下。
Nil.::(2).::(1)
“怎么样,”你说?请记住,以冒号:
结尾的方法名称在使用中缀表示法时反转class.method(argument)
顺序。