Это экземпляр Tuple3 . Кортежи можно рассматривать как неизменяемый массив фиксированного размера, в котором каждый элемент может иметь другой статический проверенный тип во время компиляции.
В вашем примере это точно:
Tuple3[Int, Int, Int]
Но вы также можете создавать кортежи разных типов:
val one = (1, false, "a")
В этом случае:
one._1 // 1, Int type
one._2 // false, Boolean
one._3 // "a", String
Кортежи имеют различные варианты использования. В основном они используются для возврата двух значений (реже, чаще) из функции. Вы можете использовать массив или список, но тогда все элементы должны быть одного типа (в худшем случае Any
), поэтому вы теряете проверку статического типа. Также нет гарантии размера такой последовательности, в то время как кортеж имеет фиксированный размер, известный во время компиляции.
Относитесь к кортежам как к легким временным объектам, но не злоупотребляйте ими. Например, не используйте Tuple3
для обозначения дня / месяца / года.