我正在为Scala隐式转换问题苦苦挣扎。下面的代码片段说明我的问题:Scala隐式转换问题
import org.junit.{ Test, Before, After };
class ImplicitsTest {
implicit def toStringWrapper(str: String) = new StringWrapper(str);
@Test
def test(){
val res1: Predicate = "str" startsWith "other";
}
}
class StringWrapper(str: String){
def startsWith(other: String): Predicate = null;
}
trait Predicate
我如何可以强制字符串“STR”通过隐式转换toStringWrapper转换得到startsWith返回谓词,而不是布尔?
代码示例不能编译。我知道String已经有了一个startsWith方法,我只想使用另一个方法,并且我认为使用隐式转换可能是一种方法。
@ rex-kerr,谢谢您的详细解答。 – 2010-10-07 06:54:18
我喜欢为'this'提供别名以避免第二个临时对象的模式。 – retronym 2010-10-11 21:09:13