2014-01-11 187 views
1
scala> def check(a: Int, b: Int): (Int, Int) = { 
     (3, 4) 
     } 

返回類型爲(Int, Int)。這怎麼可能?什麼是Scala實際返回?一個元組?數組?無論如何這是什麼類型?什麼是Scala中的「(x,y)」,實際返回的是什麼?

我知道,那麼我可以調用這個函數是這樣的:

scala> val (a, b) = check(1,2) 
a: Int = 3 
b: Int = 4 

或者這樣:

scala> val x = check(1,2) 
x: (Int, Int) = (3,4) 

我還在學習Scala,但如果我看到這個我不記得之前或之後,或此語法的名稱。它是什麼?

我給出的第一個例子很容易,返回(3, 4)。是否有更現實的方式返回此(Int, Int)類型?我必須總是把最終結果(讓我們假設x和y值包含這兩個輸入的最終輸出)像這樣(x, y)或返回(x, y)

回答

7

作爲@dhg提到的更好的方式,(Int, Int)是等於Tuple2[Int, Int]

在第二樣品您在變量定義使用模式匹配。你可以使用它與元組,案例類和所有提取器。實際上,一切都是通過提取器進行的。

scala> val p = Point(1, 2) 
p: Point = Point(1,2) 

scala> val Point(x, y) = p 
x: Int = 1 
y: Int = 2 

scala> val Property = "(.+)=(.+)".r 
Property: scala.util.matching.Regex = (.+)=(.+) 

scala> val Property(name, value) = "name1=value1" 
name: String = name1 
value: String = value1 
5

類型(Int, Int)僅僅是一個寫Tuple2[Int,Int]

+0

哇,後者看起來很複雜:D –

+0

@StefanKunze不復雜,只是羅嗦 –

相關問題