是否可以在Scala中实现对参数组的隐式转换(不将它们定义为某些类成员),如
implicit def triple2One (x :Int, s :String, d :Double) = x // just as an example
这样我就可以在像
这样的代码中调用它val x :Int = (1, "test", 2.0)
答案 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