我已经坚持了一段时间了:我有这个方法
Method(a: (A,B)*): Unit
我有一个 Map[A,B] 类型的地图,有没有办法转换这个地图,以便我可以直接将它用作参数?就像是:
Method(map.convert)
谢谢你。
我已经坚持了一段时间了:我有这个方法
Method(a: (A,B)*): Unit
我有一个 Map[A,B] 类型的地图,有没有办法转换这个地图,以便我可以直接将它用作参数?就像是:
Method(map.convert)
谢谢你。
Map
您可以使用a 从 a 构建一系列对.toSeq
。
您还可以通过使用Seq[T]
“强制转换”来将类型序列作为可变参数传递: _*
。
链接转换以实现您想要的:
scala> val m = Map('a' -> 1, 'b' -> 2, 'z' -> 26)
m: scala.collection.immutable.Map[Char,Int] = Map(a -> 1, b -> 2, z -> 26)
scala> def foo[A,B](pairs : (A,B)*) = pairs.foreach(println)
foo: [A, B](pairs: (A, B)*)Unit
scala> foo(m.toSeq : _*)
(a,1)
(b,2)
(z,26)
我不确定,但您可以尝试将 map 转换为元组数组,然后将其转换为 vararg 类型,如下所示:
Method(map.toArray: _*)
只需使用“.toSeq”将映射转换为对序列,并将其传递给后缀为“:_*”的 var-args 方法(这是 Scala 语法,允许将序列作为参数传递给 var-args 方法)。
例子:
def m(a: (String, Int)*) { for ((k, v) <- a) println(k+"->"+v) }
val x= Map("a" -> 1, "b" -> 2)
m(x.toSeq:_*)
在回复中:
scala> def m(a: (String, Int)*) { for ((k, v) <- a) println(k+"->"+v) }
m: (a: (String, Int)*)Unit
scala> val x= Map("a" -> 1, "b" -> 2)
x: scala.collection.immutable.Map[java.lang.String,Int] = Map(a -> 1, b -> 2)
scala> m(x.toSeq:_*)
a->1
b->2