Deneme amaçlı bir alan olan FieldMirror.get() öğesini çağırmayı denediğimde, deneysel Scala 2.10 yansımasını kullanarak, null değerini döndürür. Tembel valfi yansımayı kullanarak değerlendirmenin bir yolu var mı? Get() işlevi artık boş bırakılamaz. Tembel değeri yansıma kullanarak nasıl değerlendirebilirim?
bu örneği düşünün:case class Person(val firstName: String,
val lastName: String) {
lazy val name = firstName + " " + lastName
}
import scala.reflect.runtime.{universe => ru}
val runtimeMirror = ru.runtimeMirror(getClass.getClassLoader)
val fred = Person("Fred", "Smith")
val instanceMirror = runtimeMirror.reflect(fred)
val nameTerm = ru.typeOf[Person].declaration(ru.newTermName("name")).asTerm
val nameLazy = instanceMirror.reflectField(nameTerm)
nameLazy.get
>>> res8: Any = null
fred.name
>>> res9: String = Fred Smith
nameLazy.get
>>> res10: Any = Fred Smith
bu tembel ifadenin değerlendirmesini zorlar. scala'daki özellikleri bilmiyorum. –
Bu noktada, sadece tembel val - a FieldMirror'a bir referansım var - bu yüzden bunu değerlendiremem. Get() işlevi ifadeyi döndürür ve sonra kolayca değerlendirebilirim. – vertexshader