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 = ()
Является ли это:
val one = Tuple1(5)
действительно наиболее кратким способом написания литерала одноэлементного кортежа в Scala ? И работает ли Unit
как пустой кортеж?
Беспокоит ли это несогласованность еще кого-нибудь?
Это действительно самый краткий способ написать кортеж с арностью 1.
В комментариях выше я вижу много ссылок на «почему Tuple1 полезен». Кортежи в Scala расширяют черту Product
, что позволяет перебирать членов кортежа.
Можно реализовать метод, имеющий параметр типа Product
, и в этом случае Tuple1
является единственным универсальным способом итерации коллекций фиксированного размера с несколькими типами без потери информации о типе.
Есть и другие причины для использования Tuple1
, но это наиболее распространенный вариант использования, который у меня был.