我试图实现隐式字符串转换,作为创建scala对象"工厂"的实验,例如,在这种情况下,我想创建一个员工对象从一个字符串。
implicit def s2act(name: String) = new Actor[Employee](){
override def toString() : String = {
name
}
};
//two failed attempts at leveraging the implicit conversion below...
processActor("jim")
def boss : Actor = new String("Jim");
但是,编译器无法识别上述隐式绑定。为什么编译器无法处理这种隐式绑定?
答案 0 :(得分:2)
在我看来,你应该从代码中得到的错误是"类Actor接受类型参数"。
更正确的代码是:
def boss : Actor[Employee] = new String("Jim");
答案 1 :(得分:1)
我不知道processActor
的签名是什么,但从boss
的签名判断我认为问题是你没有提供类型参数Actor
。
Actor
本身是一个类型构造函数,这意味着它需要一个类型来构造一个新类型。
Actor
不是类型,您不能在函数/方法签名中使用它,但Actor[Employee]
是一种类型。
将您的boss
更改为此
def boss: Actor[Employee] = new String("Jim")