Поля, влияющие на разрешение метода для признака Scala Dynamic? - PullRequest
4 голосов
/ 01 июня 2011

Когда я впервые попал на Землю Dynamic Scala, я подумал, что попробую получить доступ к свойствам бина через applyDynamic.

Мой первый очень грубый разрез -

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

Это задумано, упущение или что-то, что планируется исправить?

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

FWIW, я предложил исправление для этого https://github.com/scala/scala/pull/98

Если оно будет принято, оно действительно будет исправлено к тому времени, когда Dynamic выйдет из -Xexperimental.

0 голосов
/ 14 июня 2011

Ответ в списке рассылки Scala-Lang от Мартина Одерского

Я думаю, это должно быть исправлено к тому времени, когда Dynamic выйдет из -Xexperimental.

...