2010-04-30 2 views
36

Я хочу сделать функцию scala, которая возвращает кортеж scala.Scala return type for tuple-functions

я могу сделать такую ​​функцию:

def foo = (1,"hello","world") 

и это будет прекрасно работать, но теперь я хочу, чтобы сообщить компилятору, что я ожидал, чтобы быть возвращен из функции вместо использования встроенного логического вывода типа (в конце концов, я не знаю, что такое (1,"hello","world")).

+1

OK, люди ... Я обвиняю компилятор в том, что он не дал мне никакой полезной информации. Я забыл поставить знак =, поэтому у меня появилось множество ошибок. Если кто-нибудь приходит с подробным ответом, я соглашусь с ним, но правильный путь: def foo: Tuple [Int, String, String] = (1, "hello", "world") – Felix

+0

Tuple3 [.. .] , даже не забудьте указать # элементов в имени класса (макс. 22) – Felix

ответ

62
def foo : (Int, String, String) = (1, "Hello", "World") 

Компилятор интерпретирует тип (Int, String, String) как Tuple3[Int, String, String]

1

Кроме того, вы можете создать псевдоним типа, если вы устали от написания (Int, String, String)

type HelloWorld = (Int,String,String) 
... 

def foo : HelloWorld = (1, "Hello", "World") 
/// and even this is you want to make it more OOish 
def bar : HelloWorld = HelloWorld(1, "Hello", "World")