下面的代碼爲什麼Scala強制從Char到Double類型?
object testType extends App {
def func(x:Int) = if(x==0) 1.0 else 'c'
println(func(0))
println(func(1))
}
結果
1.0
99.0
起初,當我寫到這,我還以爲是斯卡拉不會允許這樣的功能,但它解釋功能(Int) => Double
。這感覺就像類型強制。
如果我替換'c'
爲"c"
在功能上面,它實際上返回
1.0
c
在功能現在被解釋爲(Int) => Any
問題:如果Scala是強類型的,爲什麼第一例如'c'
返回了Double,爲什麼(Int) => Double
和(Int) => Any
這兩個例子之間的區別?
有一個編譯標誌上scalac該'-Ywarn-數字-widen'。如需更多信息,請參閱http://pedrorijo.com/blog/scala-compiler-review-code-warnings/ – pedrorijo91
,如果您想「禁用它」,您也可以使用'-Xfatal-warnings',否則編譯失敗數字變寬 – pedrorijo91
@ pedrorijo91感謝您的建議和文章鏈接:) – Samar