2015-01-03 59 views
1

以下代碼在Scala中如何工作?一些具有多個參數創建元組的選項

scala> Some(2,true,3, false) 
res13: Some[(Int, Boolean, Int, Boolean)] = Some((2,true,3,false)) 

我沒有看到爲某些可以接受多個參數定義的應用方法。

+1

另請參閱http://stackoverflow.com/questions/5997553/why-and-how-is-scala-treating-a-tuple-specially-when-calling-a-one-arg-function http:// stackoverflow.com/questions/3526156/in-scala-how-come-println1-2-works http://stackoverflow.com/questions/2850902/scala-coalesces-multiple-function-call-parameters-into-a-tuple -can-this-be-di/2852147#2852147 – stew

+0

感謝您的參考!這很令人驚訝。 – user3246194

回答

3

如果元組不適合,則可以隱式調整多個參數以形成元組;這會發生的任何方法,沒有什麼特別的Some在這裏:

def doSomething(a: Any) = {...} 
doSomething(2, true, 3, false) 

你可以(而且,我認爲,應該這樣;它是可以掩蓋編程錯誤一個不良特性)使編譯器發出一個警告,如果這發生,通過標誌-Ywarn-adapted-args。請參閱here獲取類似推薦標誌的列表。

1

Some(2,true,3, false)是語法糖0123'。

這就是爲什麼類型是Some[(Int, Boolean, Int, Boolean)]

它的工作原理,直到22元,如果你需要更多的,那麼你可以使用一個集合,而不是一個元組。

相關問題