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