ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
Dynamic类型的使用在第3章讨论过;这里你查看如何 Dynamic可以添加更多灵活性到标准类。 首先,任何新的定义的类可以实现 Dynamic 。当这种情况,实例类字段在类中定义的是强类型的。如果不是,他们属于Dynamic类型。考虑下面的例子: ~~~ class Main { static function main() { var item = new Item(); // regular access to class field item.name = “My Item”; // now exists a description field with the specified value item.description = “Item description”; // would fail because the type of price is defined in the class and // must be a numeric value not a string //item.price = “-”; // trace to null because a dynamic object contains every possible field trace(item.quantity); } } class Item implements Dynamic { public var name : String; public var price : Float; public function new() {} } ~~~ # 动态类型参数 * * * * * Dynamic 同样带有一个类型参数,这种情况每个Dynamic对象的字段都有传递的参数类型。这很快速有效来实现一个hash表使用点语法。 ~~~ var table : Dynamic < String > = cast Reflect.empty(); table.a = “A”; // works just fine table.b = 1; // throws a compilation error ~~~ 最终一个类可以实现Dynamic 通过一个类型参数。这种情况,每个字段显式定义在类中会保持它自己的类型,而所有其他的则有指定的类参数。 当一个类实现Dynamic,所有派生的类会继承Dynamic。在一个或多个类实现Dynamic通过类型参数,最后声明在链中的会被有效使用。