【发布时间】:2010-12-25 14:37:48
【问题描述】:
假设我有这个:
class String2(val x:String) {
def *(times:Int) : String = {
val builder = new StringBuilder()
for( i <- 0 until times) {
builder.append(x)
}
builder.toString()
}
}
现在如果我添加这个隐式:
implicit def gimmeString2(y:String) = new String2(y)
我会得到一个编译错误,因为 stringWrapper 也添加了这个隐式。有没有办法对编译器说“忽略其他隐式,使用这个”,这样我就不必实例化 String2 对象并处理它?
我承认示例代码可能不是最合适的(对于这个问题),但我认为可以。
【问题讨论】:
-
我不认为它是重复的。该问题的作者希望保留这两个隐含含义。我只想要一个。
-
RichString 中已有一种与上述方法非常相似(如果不相同)的方法。如果您希望使用您的方法,也许您可以使用 import a.b.{c => _} 技术来隐藏 c,其中 c 是隐式方法名称。