gpt4 book ai didi

class - Haxe - 将字符串映射到类

转载 作者:行者123 更新时间:2023-12-02 11:21:25 31 4
gpt4 key购买 nike

我应该如何将字符串映射到 Haxe 中的类,然后实例化它?

class Foo{}
class Bar extends Foo{}
class Buzz extends Foo{}

// (...)

var classMap:Map<String, Class<Foo>> = [
"abc" => Bar,
"def" => Buzz
];
var myClass:Class<Foo> = classMap["abc"];
var myObj:Foo = new myClass(/* params */);

我认为这会起作用,但它在 myClass 之后抛出 unexpected (。出了什么问题?

最佳答案

而不是存储Class<T>在映射中并借助反射进行实例化,这是一种更好的模式来存储对构造函数的引用(使用它们的 function type ),如 this haxe.org blog post 中详细说明。 .

class Foo {}
class Bar extends Foo {
public function new() {}
}
class Buzz extends Foo {
public function new() {}
}
var constructors:Map<String, Void->Foo> = [
"abc" => Bar.new,
"def" => Buzz.new
];
var construct:Void->Foo = constructors["abc"];
var myObj:Foo = construct();

https://try.haxe.org/#49E93

Type.createInstance() 不同方法,这不允许您将任意参数传递给它们甚至可能不接受的构造函数,因此它更加类型安全。它还自动与 dead code elimination 配合使用因为 Haxe 看到构造函数被引用。

关于class - Haxe - 将字符串映射到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57667972/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com