scala中的隐式字符串转换不会编译

时间:2014-08-10 02:19:58

标签: scala implicit

我试图实现隐式字符串转换,作为创建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");

但是,编译器无法识别上述隐式绑定。为什么编译器无法处理这种隐式绑定?

2 个答案:

答案 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")

相关文章:What is a higher kinded type in Scala?