2

得到一个类,该类带有一个方法,该方法接受一个对象并循环遍历它,将对象的值分配给该类。这可能在应用程序中发生相当多的情况,我想知道是否有一种有效且最好与语言无关的语法来验证对象的属性名称是否存在并在分配给类之前确认值类型?我将需要将此代码至少导出到 flash 和 javascript,以后可能还会用到其他代码。我需要保持方法通用,因为它存在于基类中。大致如下:

public function updateProperties(propsObj:Object):void {
  for (var prop in propsObj) {
    if (/* this has prop && typeof propsObj[prop] == typeof this[prop] */) {
      this[prop] = propsObj[prop];
    }
  }
}

Haxe 的新手,所以我在为这类事情找到方法系列时遇到了一些麻烦。反射似乎有接近我正在寻找的方法,但很多方法看起来可能对我需要的东西来说太过分了,希望有一些见识。

4

1 回答 1

5

这似乎有效。

public function updateProperties(props:Dynamic) {
  for (prop in Reflect.fields(props)) {
    if (Reflect.hasField(this, prop)) {
      Reflect.setProperty(this, prop, Reflect.getProperty(props, prop));
    } else {
      trace("cannot set property " + prop + " on " + this);
    }
  }
}
于 2012-10-22T21:34:34.230 回答