我正在研究代碼的編碼挑戰問題,我在第一天。我從一個只包含(((()(())((所以我想把每個'('到1和每個')'都轉換成-1)的文件中讀取,所以我可以計算它們。我有問題時,我地圖 findFloor超過源。我得到一個類型不匹配。一切看起來我的權利,這就是怪異的一部分,因爲它不工作。如何對列表中的元素使用模式匹配?
import scala.io._
object Advent1 extends App {
// Read from file
val source = Source.fromFile("floor1-Input.txt").toList
// Replace each '(' with 1 and each ')' with -1, return List[Int]
def findFloor(input: List[Char]):Int = input match {
case _ if input.contains('(') => 1
case _ if input.contains(')') => -1
}
val floor = source.map(findFloor)
}
錯誤輸出
error: type mismatch;
found : List[Char] => Int
required: Char => ?
val floor = source.map(findFloor) ^ one error found
我是我做錯了什麼?/我是什麼,我缺少什麼?
您可以放心地刪除'(_ match','.map {case ...}'也可以,它定義了部分匿名函數 –
謝謝!但我試圖獲得source.map(findFloor)方法我可以告訴我給這個函數一個字符列表,它期望得到一個字符列表,所以我不明白這個問題是什麼。關閉了終端,在那裏我運行斯卡拉repl它的工作。 – Native
@VictorMoroz謝謝!我已編輯我的答案 – vsminkov