2010-04-30 17 views
36

Chcę utworzyć funkcję scala, która zwraca krotkę scala.Powrót typu scala dla funkcji krotek

mogę zrobić funkcję tak:

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

i to będzie działać dobrze, ale teraz chcę poinformować kompilator, czego można oczekiwać, aby być zwracane z funkcji zamiast za pomocą wbudowanego w rodzaju wnioskowania (w końcu nie mam pojęcia, co to jest (1,"hello","world")).

+1

OK, ludzie ... Winię kompilatora za to, że nie przekazałem mi żadnych użytecznych informacji. Zapomniałem umieścić znak =, stąd mam mnóstwo błędów. Jeśli ktoś przychodzi z rozbudowanych odpowiedzi będę go zaakceptować choć poprawny sposób było: def foo: Tuple [Int, String, String] = (1, "cześć", "świat") – Felix

+0

Tuple3 [.. .] nawet, pamiętaj, aby umieścić # pozycji w nazwie klasy (max 22ish) – Felix

Odpowiedz

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

Kompilator interpretuje typ (Int, String, String) jako Tuple3[Int, String, String]

1

Ponadto, można utworzyć typ alias jeśli znudzi pisanie (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")