たとえば、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)
}
私は次のように使用しようとしています(暗黙のdefEnhanceLabelをインポートした後):
val l = new Label() {
opacity = 0.5
}
これはコンパイルされません。エラーメッセージは次のとおりです。
not found: value opacity
opacity = 0.5
^
私がしなければなりません:
val l = new Label() {
this.opacity = 0.5
}
これは、不透明度セッターが暗黙的な変換によるものだからだと思いますか? 暗黙的な変換を検索するには、「これ」が必要ですか? 欠落していると「これ」と見なされませんか?これを大きくスケールアップすると無数の「これ」になってしまいます。私には冗長に思えるキーワード。もちろん、「x」に短縮できます。またはそのようなものですが、私はそれを完全に取り除きたいです。
ヒントをいただければ幸いです。
カーティス