val oddOrEven = (odd, even)
oddOrEven._1
會給「奇」,而oddOrEven._2
會給「甚至」
我們基本上得到了「無名」的成員一個元組,如果你願意這樣。
但是讓我們假設我想獲得奇數或偶數,這取決於一些外部數據,就像這樣:
val witness: Int = {numberOfPrevious % 2}
現在
,讓我們做到這一點:
val one = oddOrEven._witness
這不會編譯。
是否存在一些特殊的語法或者這是不可能的?
我很好奇,想知道是不是編譯器不能推斷出witness
的唯一可能值是0和1(但我認爲愚蠢的在我身邊,但我不得不嘗試)並嘗試這樣的:
val oddOrEven = (odd, even)
val witness: Int = {numberOfPrevs % 2}
val v = x match {
case 0 => oddOrEven._1
case 1 => oddOrEven._2
}
又一次val one = oddOrEven._witness
是行不通的
然後我進一步挖掘,發現,的確是編譯器不會檢查疲憊。像:
val v = x match {
case 1 => oddOrEven._1
case 2 => oddOrEven._2
}
仍然會編譯,雖然2不可能和0失蹤!
所以,我知道我在這裏混合的東西。我知道有沒有被所謂的在我的母語「筋疲力盡」的比賽,所以可能的值不會在編譯時推斷,但在運行時(實際上,我會得到一個
scala.MatchError: 0 (of class java.lang.Integer) at runtime.
但,但我真正感興趣的:由「間接指標」我能「無名」的元組像我的意思是
不,不是像斯卡拉這樣的靜態類型語言。 – Haspemulator