例如,我有一个增强 JavaFX Label 类的隐式类。简而言之:
class EnhanceLabel(val l: Label) extends AnyVal {
def opacity = l.getOpacity
def opacity_= (d: Double) { l.setOpacity(s) }
}
object EnhanceLabel {
implicit def enhanceLabel(x: Label) = new EnhanceLabel(x)
}
我正在尝试像这样使用它(在导入隐式 def enhanceLabel 之后):
val l = new Label() {
opacity = 0.5
}
这不编译。错误信息是:
not found: value opacity
opacity = 0.5
^
我要做:
val l = new Label() {
this.opacity = 0.5
}
我认为这是因为不透明度设置器来自隐式转换?是否需要“this”来搜索隐式转换?如果它丢失,它不会假设“这个”吗?如果我把它放大很多,我最终会得到无数的“这个”。对我来说似乎多余的关键字。当然,我可以将其缩短为“x”。或类似的东西,但我想完全摆脱它。
任何提示表示赞赏。
柯蒂斯