Scala:通过方法隐式转换(例如toString)

Nor*_*wap 4 scala view implicit

在Scala中,我想做:

class Identifier(val str: String) {
    override def toString(): String = str
}

class Variable(t: Type, name: Identifier, mutable: Boolean) {
    override def toString(): String = name
}
Run Code Online (Sandbox Code Playgroud)

但我不能,因为Scala不会隐式地将namein Variable#toString()的定义转换为String.有没有办法实现这一目标?

要明确:我不想定义一个额外的方法,如:

object Identifier {
    implicit def idToString(x: Identifier): String = x.str
}
Run Code Online (Sandbox Code Playgroud)

我想要toString()调用方法来进行转换.

Jen*_*olm 6

尝试toString()VariablestoString方法中调用name之后进行显式调用,如下所示:

override def toString() = name.toString()
Run Code Online (Sandbox Code Playgroud)

在这里,您将显式调用转换Variable为字符串的方法,从而准确地告诉编译器您想要的内容.

..除非你真的要求方法是隐含的......