【发布时间】:2011-07-18 17:07:30
【问题描述】:
我想要一个提取器隐式转换其参数,但它似乎不起作用。考虑这个非常简单的案例:
case class MyString(s: String) {}
implicit def string2mystring(x: String): MyString = new MyString(x)
implicit def mystring2string(x: MyString) = x.s
object Apply {
def unapply(s: MyString): Option[String] = Some(s)
}
但我无法按预期使用它:
val Apply(z) = "a" // error: scrutinee is incompatible with pattern type
谁能解释为什么无法将参数从String 转换为MyString?我希望它会即时调用string2mystring("a")。显然我可以通过说 val Apply(y) = MyString("a") 来解决这个问题,但我似乎不必这样做。
注意:这个问题类似于this one,但 1)人们并没有很好地回答为什么会发生这种情况,2)这个例子比它需要的更复杂。
【问题讨论】:
标签: scala implicit-conversion unapply