gpt4 book ai didi

scala - 如何对列表中的元素使用模式匹配?

转载 作者:行者123 更新时间:2023-12-01 07:44:09 24 4
gpt4 key购买 nike

我正在应对 Advent of Code 的编码挑战,现在是第一天。我从一个只包含 ((()(())(( 所以我希望将每个 '(' 变为 1 并将每个 ')' 变为 -1 的文件中读取,以便我可以计算它们。但是我在 map findFloor over source 时遇到问题。我发现类型不匹配。一切对我来说都是正确的,这是奇怪的部分,因为它不起作用。

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

我在这里做错了什么?/我错过了什么?

最佳答案

Scala map 有效 over an elements而不是整个集合。试试这个:

val floor = source.map {
case '(' => 1
case ')' => -1
}.sum

关于scala - 如何对列表中的元素使用模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38854339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com