<分区>
我正在尝试创建一个参数数量可变的函数
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]
的函数?