gpt4 book ai didi

scala - 为什么我得到 "pattern type is incompatible with expected type"?

转载 作者:行者123 更新时间:2023-12-05 00:06:40 26 4
gpt4 key购买 nike

我在我的 Scala 代码中遇到了一个我自己无法解决的错误(我是 Scala 的新手)。
我有以下代码:

def myFunction(list: List[Any]): String = {
var strItems : String = "";
list.foreach(item => {
strItems += item match {
case x:JsonSerializable => x.toJson()
case y:String => ("\"" + y + "\"")
case _ => item.toString
}
if(item != list.last)
strItems += ",";
})
strItems;
}

我得到的错误是:

错误:模式类型与预期类型不兼容;
找到:字符串
要求:单位
case y:String => ("\""+ y + "\"")

知道为什么吗?

PS:有没有更高效的方法来编写 myFunction

最佳答案

就原始问题而言,代码无法编译,因为它需要在匹配项周围加上括号,即。 strItems += (item match { ... })
一种更“实用”的写法可能是这样的:

def myFunction(list:List[Any]):String = {
val strings:List[String] = list.map{
case x:JsonSerializable => x.toJson()
case y:String => ("\"" + y + "\"")
case z => z.toString
}
strings.mkString(",")
}

您可能可以使用 View 使其更懒惰和更“高效”,尽管我不知道这是否会将两个底层循环( mapmkString )合并为一次遍历。

关于scala - 为什么我得到 "pattern type is incompatible with expected type"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049639/

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