我想得到:
val s: String ="12ab"
我试过了:
//it is ok
List(('1', '2'), ('a', 'b')).map { case (a, b) => a to b mkString } mkString
// it is invalid
List((1, 2), ('a', 'b')).map{case (a,b)=> a to b mkString } mkString
如何编译第二个示例?
答案 0 :(得分:2)
问题是在同一个列表中使用Int
和Char
会使其成为List[(AnyVal, AnyVal)]
。您可以使用模式匹配来解决问题:
def main(args: Array[String]): Unit = {
println(List((1, 2), ('a', 'b')).map {
case (x: Int, y: Int) => x to y mkString
case (x: Char, y: Char) => x to y mkString
} mkString)
}
收率:
12ab