3
我是新來的斯卡拉,有點困惑。在經歷「不耐煩的斯卡拉」,並做練習時,我嘗試了一個結果是字符串「Hello」的所有數值的乘積。我首先想到的是要做到以下幾點:爲什麼「Hello」.foldLeft(1)(_。toLong * _.toLong)出錯?
"Hello".foldLeft(1)(_.toLong * _.toLong)
但是,表達式(_.toLong * _.toLong)獲得了運營商和操作數之間的類型不匹配,一個Int是意料之中的,但它獲得了長。
下面的作品,雖然:
"Hello".map(_.toLong).reduce(_ * _)
爲什麼使用foldLeft當操作員「*」期待的詮釋,而不是龍?是因爲列表的內容嗎?這些字符是否隱式轉換爲Ints?
謝謝!
是因爲你的初始參數'1'的類型是int嗎?如果將其更改爲「1L」(或等效的Scala),會發生什麼? (作爲評論而不是回答發佈,因爲我不知道斯卡拉,所以這只是一個受過教育的猜測。) – ruakh
是的,就是這樣。好決定。 –
所以你的意思是Scala的*運算符不能乘以一個長整型?哇,那是進步...... – Kaz