我是Scala的新手,正在處理List和Pattern Matching上的一個小任務。賦值是直接計算列表中每個唯一字符的頻率併發出(Char,Int)元組的列表。我正在嘗試模式匹配的行上發現錯誤(...case(cs.head, _)...
)以查看當前字符是否已經被計數。得到一個錯誤「構造函數不能實例化到預期類型;找到:(T1,T2)required:List [(Char,Int)]」
def times(chars: List[Char]): List[(Char, Int)] = {
def calcCharFreq(c: Char, cs: List[Char], count: Int): (Char, Int) = {
if(cs.isEmpty) (c, count)
else
if(c == cs.head) calcCharFreq(c, cs.tail, count+1)
else calcCharFreq(c, cs.tail, count)
}
def calcFreq(cs: List[Char], pairs: List[(Char, Int)]): List[(Char, Int)] = {
if(cs.isEmpty) pairs
else{
pairs match {
case (cs.head, _) => calcFreq(cs.tail, pairs)
}
calcFreq(cs.tail, calcCharFreq(cs.head, cs.tail, 0) :: pairs)
}
}
calcFreq(chars, Nil)
}
在此先感謝 SK
'pairs:List [(Char,Int)]'是一個List,並且您將它作爲Tuple2進行匹配。 – tuxdna 2014-10-22 10:13:22
啊,Coursera課程再次開始時出現的問題。不用擔心榮譽代碼太多?另一位用戶認爲是相同的方式:http://stackoverflow.com/questions/26502978/counting-occurences-of-characters-in-a-string-using-tail-recursion – 2014-10-23 07:35:09
@Paul最後我知道,你沒有義務在無論如何回覆。歡迎您坐在高臺上停止光顧。 – user4169365 2014-10-24 13:02:36