1 :: 2 :: Nil与(1 ::(2 :: Nil))之间的区别?

问题描述 投票:0回答:2

在我一直在使用的Scala教程中,我一直看到以这种方式构造的列表:

(1 :: (2 :: Nil))

这个和非括号版本之间有区别吗?

1 :: 2 :: Nil
scala
2个回答
3
投票

当Scala编译器编译时,两者都相同

(1 :: (2 :: Nil))
//res0: List[Int] = List(1, 2)

1 :: 2 :: Nil
//res1: List[Int] = List(1, 2)

使用的括号只是为了显示列表中的前缀和顺序,因为Nil是最后一个元素。


6
投票

他们是一样的。可以添加括号来说明操作顺序,但它们不会改变任何内容。事实上,它们毫无意义,因为没有其他操作顺序是可能的。在两种情况下,中缀(即无点)符号都脱糖至以下。

Nil.::(2).::(1)

“怎么样,”你说?请记住,以冒号:结尾的方法名称在使用中缀表示法时反转class.method(argument)顺序。

© www.soinside.com 2019 - 2024. All rights reserved.