scala> val two = (1,2)
two: (Int, Int) = (1,2)
scala> val one = (1,)
<console>:1: error: illegal start of simple expression
val one = (1,)
^
scala> val zero = ()
zero: Unit = ()
Run Code Online (Sandbox Code Playgroud)
这是:
val one = Tuple1(5)
Run Code Online (Sandbox Code Playgroud)
在Scala中编写单例元组文字真的是最简洁的方法吗?并且Unit像空元组一样工作吗?
这种不一致是否会困扰其他人?
它实际上是编写一个arity为1的元组最简洁的方法.
在上面的评论中,我看到许多引用"为什么Tuple1有用".Scala中的元组扩展了Product特征,这使您可以迭代元组成员.
可以实现具有类型参数的方法Product,并且在这种情况下,Tuple1是在不丢失类型信息的情况下迭代具有多种类型的固定大小集合的唯一通用方法.
使用还有其他原因Tuple1,但这是我最常见的用例.
我从未见过一次使用过Tuple1.我也无法想象一个.
在Python中,人们使用它,元组是固定大小的集合.Scala中的元组不是集合,它们是类型的笛卡尔积.所以,a Int x Int是a Tuple2[Int, Int],或(Int, Int)简称.当然,a Int是a Int,没有类型是没有意义的.