1
可以說我想要有一個Stream
的正方形。一個簡單的方法來聲明這將是:爲什麼Scala編譯器不能推斷Stream類型的操作?
scala> def squares(n: Int): Stream[Int] = n * n #:: squares(n + 1)
但這樣做,會產生錯誤:
<console>:8: error: overloaded method value * with alternatives:
(x: Double)Double <and>
(x: Float)Float <and>
(x: Long)Long <and>
(x: Int)Int <and>
(x: Char)Int <and>
(x: Short)Int <and>
(x: Byte)Int
cannot be applied to (scala.collection.immutable.Stream[Int])
def squares(n: Int): Stream[Int] = n * n #:: squares(n + 1)
^
那麼,爲什麼不能斯卡拉推斷這顯然是一個Int
的n
類型?有人可以解釋發生了什麼事嗎?