Scala 视图边界依赖于扩展对象的扩展方法

Scala 视图边界依赖于扩展对象的扩展方法,scala,implicit-conversion,implicit,Scala,Implicit Conversion,Implicit,我试图为一个类定义一些扩展方法,如下所示。其中一个方法需要接受可转换为路径相关类型的参数,该类型在其路径中包含扩展对象。不幸的是,在调用站点编译失败,因为编译器似乎无法识别视图定义中对“outer”的引用引用与调用站点中的“outer”引用的对象相同。是否有办法修复此问题,以便编译注释行 import scala.language.implicitConversions class Outer { class Inner { } class ConvertsToInner {

我试图为一个类定义一些扩展方法,如下所示。其中一个方法需要接受可转换为路径相关类型的参数,该类型在其路径中包含扩展对象。不幸的是,在调用站点编译失败,因为编译器似乎无法识别视图定义中对“outer”的引用引用与调用站点中的“outer”引用的对象相同。是否有办法修复此问题,以便编译注释行

import scala.language.implicitConversions

class Outer {
  class Inner {
  }

  class ConvertsToInner {
  }

  object ConvertsToInner {
    implicit def convert(source : ConvertsToInner) = new Inner()
  }
}

class Code {
  implicit class ExtendsOuter(val outer : Outer) {
    def extensionMethod[T <% outer.Inner](argument : T) { }
  }

  val outer = new Outer()
  val convertsToInner = new outer.ConvertsToInner()

  //does not compile!
  outer.extensionMethod(convertsToInner)
}

从以下位置替换扩展方法定义:

def extensionMethod[T <% outer.Inner](argument : T) { }


实际上,在这种情况下,它需要是外部的。内部的。
def extensionMethod[T <% Outer#Inner](argument : T) { }