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()调用方法来进行转换.
尝试toString()在VariablestoString方法中调用name之后进行显式调用,如下所示:
override def toString() = name.toString()
Run Code Online (Sandbox Code Playgroud)
在这里,您将显式调用转换Variable为字符串的方法,从而准确地告诉编译器您想要的内容.
..除非你真的要求方法是隐含的......