scala – 有没有办法控制哪个隐式转换将被使用?
假设我有这个:
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对象,并在此工作? 我承认示例代码可能不是最合适的(对于这个问题),但我认为它会做. 解决方法
在scala 2.8中,他们添加了一个优先级排序系统.这在
SIP on the new Java arrays年解释:
得出结论,如果替代方法具有相同的参数类型,则在子类中定义的参数类型 trait LowPriorityImplicits { //lower priority conversions } object HighPriorityImplicits extends LowPriorityImplicits { //higher-order ones here } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |