Есть ли в Scala синтаксис для 0- и 1-кортежей?

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 как пустой кортеж?

Беспокоит ли это несогласованность еще кого-нибудь?

24
задан Jay Hacker 26 August 2011 в 16:03
поделиться

1 ответ

Это действительно самый краткий способ написать кортеж с арностью 1.

В комментариях выше я вижу много ссылок на «почему Tuple1 полезен». Кортежи в Scala расширяют черту Product, что позволяет перебирать членов кортежа.

Можно реализовать метод, имеющий параметр типа Product, и в этом случае Tuple1 является единственным универсальным способом итерации коллекций фиксированного размера с несколькими типами без потери информации о типе.

Есть и другие причины для использования Tuple1, но это наиболее распространенный вариант использования, который у меня был.

7
ответ дан 28 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: