多个参数的隐式转换

时间:2013-11-29 17:13:16

标签: scala implicit-conversion implicit

是否可以在Scala中实现对参数组的隐式转换(不将它们定义为某些类成员),如

implicit def triple2One (x :Int, s :String, d :Double) =  x  // just as an example

这样我就可以在像

这样的代码中调用它
val x :Int = (1, "test", 2.0)

1 个答案:

答案 0 :(得分:3)

有可能:

scala> implicit def iFromISD(isd: (Int, String, Double)): Int = isd._1
iFromISD: (isd: (Int, String, Double))Int

scala> val x: Int = (1, "two", 3.0)
x: Int = 1

当然,结果val上必须有一个类型注释来驱动隐式转换的搜索和应用。

<强>附录

我发现另一种方式不涉及可疑的隐式转换:

scala> val (y, _, _) = (1, "two", 3.0)
y: Int = 1