【问题标题】:Implicit conversion for multiple parameters多个参数的隐式转换
【发布时间】:2013-11-30 06:59:58
【问题描述】:

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

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

这样我就可以在代码中调用它

val x :Int = (1, "test", 2.0)

【问题讨论】:

  • 从您的示例中,我认为最接近所需结果的方法是为Tuple3[Int, String, Double] 定义一个隐式转换(也可以在参数中简写为arg : (Int, String, Double))。 .
  • 好吧,好像不错。元组仅限于 Tuple22 对吧?
  • 是的,和FunctionN一样

标签: scala implicit-conversion implicit


【解决方案1】:

有可能:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多