如何在Scala中生成A1样式引用(例如,A1,B1,C1,A2,B2,C2等)。
我可以将两个列表压缩在一起以生成单个元组向量:
"ABCDEFG".zip("1234567")
产生
Vector((A,1), (B,2), (C,3), (D,4), (E,5), (F,6), (G,7), (H,8), (I,9))
但是,尝试在以下错误中将其展平为单个结果列表。
error: No implicit view available from (Char, Char) => scala.collection.GenTraversableOnce[B].
除了解决错误之外,它并没有真正生成所需的A1样式引用列表。如何在Scala中生成A1样式引用列表?
答案 0 :(得分:3)
zip()没关系,只需正确映射
scala> "ABCDEFG".zip("1234567").map{case (c,r) => c + r.toString}
res0: scala.collection.immutable.IndexedSeq[String] = Vector(A1, B2, C3, D4, E5, F6, G7)
答案 1 :(得分:1)
两个flatMap
次调用与我们想要编号的方式相反的顺序解决了这个问题。
"123456789" flatMap { row =>
"ABCDEFGHI" flatMap { col =>
Seq(s"${col}${row}")
}
}
对问题的一个更简洁的答案使用了理解:
for {
row <- "123456789"
col <- "ABCDEFGHI"
} yield s"${col}${row}"
产生一个参考字符串向量:
Vector(A1, B1, C1, ..., G9, H9, I9)