4

Dynamic Sc​​ala ランドへの最初の進出として、applyDynamic を介して Bean プロパティにアクセスしようと考えました。

私の最初の非常にラフなカットは

trait BeanProperties extends Dynamic {
  def applyDynamic(name: String)(args: Any*) = {
    if (args.length == 0)
      PropertyUtils.getProperty(this, name)
    else
      null
  }
}

となることによって

val bean = new JTextField("text") with BeanProperties
bean.getText should equal("text")
bean.text should equal("text")

ここまでは順調ですね!でもやってみると

bean.background should equal(bean.getBackground)

コンパイラは、メソッドを合成するのではなく、background という名前のフィールドへのアクセスを許可しようとして、不平を言います。

variable background in class Component cannot be accessed in javax.swing.JTextField with BeanPropertiesTest.this.BeanProperties

これは設計によるものですか、見落としですか、それとも修正が予定されているものですか?

4

2 に答える 2

2

FWIW、私はこれの修正を提案しましたhttps://github.com/scala/scala/pull/98

それが受け入れられれば、Dynamic が -Xexperimental から出るまでに修正されるでしょう。

于 2011-10-02T21:52:10.940 に答える
0

Martin Odersky からの Scala-Lang メーリング リストでの回答

これは、Dynamic が -Xexperimental を終了するまでに修正する必要があると思います。

于 2011-06-14T07:15:13.860 に答える