相关疑难解决方法(0)

如何在Scala中链接implicits?

pimp-my-library模式允许我通过提供从该类到实现该方法的类的隐式转换,似乎向类添加方法.

斯卡拉不允许两个这样的隐式转换正在发生,但是,我不能得到AC使用隐含AB和另一个隐含的BC.有没有办法解决这个限制?

scala implicit-conversion implicits

76
推荐指数
2
解决办法
7593
查看次数

Scala传递隐式转换

  • 我有3个Scala类(A,B,C).
  • 我有一个隐含的转换,从A - > B和一个来自B - > C.

在我的代码中的某个时刻,我想在A上调用C方法.这可能吗?我提出的一个修复是从A - > C转换,但这似乎有点多余.

注意:

  • 当我在A上调用B方法时,它可以工作.
  • 当我在B上调用C方法时,它可以工作.
  • 当我在A上调用C方法时,它表示它没有在A的主体中找到该方法

谢谢 ...

scala implicit-conversion

6
推荐指数
2
解决办法
776
查看次数

Scala可以在一个表达式中应用多个隐式转换吗?

可能重复:
如何在Scala中链接implicits?

Scala可以在一个表达式中应用多个隐式转换吗?

考虑这个简单的例子:

  case class Wrapper(s: String)

  case class WrapperWrapper(w: Wrapper)

  implicit def string2Wrapper(s: String) = Wrapper(s)

  implicit def wrapper2WrapperWrapper(w: Wrapper) = WrapperWrapper(w)

  // implicit conversation -->  w = string2Wrapper("w")
  val w: Wrapper = "w"

  // implicit conversation -->  ww = wrapper2WrapperWrapper(w)
  val ww: WrapperWrapper = w

  // does NOT compile!
  // ideally --> sad = wrapper2WrapperWrapper(string2Wrapper("ww"))
  val sad: WrapperWrapper = "ww"
Run Code Online (Sandbox Code Playgroud)

有没有办法在最后一行中进行"双重"转换?

我可以通过定义另一个隐含的方式帮助事情:

implicit def string2WrapperWrapper(s:String) = wrapper2WrapperWrapper(s)
Run Code Online (Sandbox Code Playgroud)

但似乎不应该这样......

scala

4
推荐指数
2
解决办法
1367
查看次数

标签 统计

scala ×3

implicit-conversion ×2

implicits ×1