gpt4 book ai didi

Option[String] 情况下的 Scala 大小写模式匹配错误

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

<分区>

我正在尝试创建一个参数数量可变的函数

def foo(args: String*)

此函数的作用是消除空字符串并用逗号 (,) 分隔其余字符串。

def foo(args: String*) = {
args.flatMap {
case str if str.isEmpty => None
case str => Some(str)
}.mkString(", ")
}

当我扩展此函数以支持Option[String] 参数时

def foo(args: Any*) = {
args.flatMap {
case str: String if str.isEmpty => None
case str: Option[String] if str.getOrElse("").isEmpty => None
case str => Some(str)
}.mkString(", ")
}

我收到一条警告说

warning: non-variable type argument String in type pattern Option[String] is unchecked since it is eliminated by erasure

当我传递参数时

foo("", "Hello", Some(""), Some("what"))

我遇到了错误

scala.MatchError: Some(what) (of class scala.Some) at $anonfun$makeAddress$1.apply(:12) at $anonfun$makeAddress$1.apply(:12)

我应该如何创建同样支持 Option[String] 的函数?

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