4
有人可以告訴我這個函數定義有什麼問題嗎?Scala中的類型不匹配foldRight
def incr[Int](l: List[Int]): List[Int] =
l.foldRight(List[Int]())((x,z) => (x+1) :: z)
Scala編譯器抱怨類型不匹配的功能傳遞給foldRight
體:
<console>:8: error: type mismatch;
found : Int(1)
required: String
l.foldRight(List[Int]())((x,z) => (x+1) :: z)
^
這裏有什麼問題嗎?
與此錯誤相同的錯誤:def incr [T](l:List [T]):List [T] = l.foldRight(List [T]())( (x,z)=>(x + 1):: z)'仍然不明白(?) –
對不起,如此密集,愚蠢,明白了。謝謝。 (列表[Int]):List [Int] = l.foldRight(List [Int]())((x,z)=>(x + 1):: z)' –
@ Bill an任意類型沒有'+'方法,這就是爲什麼你的元素類型需要是'Int',或者你傳遞給foldRight的函數需要處理'Any'。我不確定爲什麼會產生這個確切的錯誤信息,但它可能與編譯器有關,因爲'+'是串聯字符串的方法。如果編譯器給出了關於陰影類型的警告,那將會很好。 –