如何将属性附加到字符串?

时间:2013-12-08 06:38:31

标签: haxe

我可以在haxe中做这样的事情:

trace ("Blue".description);
trace ("Green".description);
trace ("Red".description);

然后,在某处添加一个基于字符串值的开关,为每个案例返回不同的描述?

我看到有人使用此功能进行本地化,例如"Car".i18()

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

查看static extensions

基本上它允许你假装静态方法是成员方法,但第一个参数是你正在操作的对象。

在你的例子中

class ColorDescriptions {
    static public function description( color:String ) {
        return switch (color) {
            case "red": "passionate";
            case "blue": "calm";
            case "green": "environmentally friendly";
            default: "unknown colour";
        };
    }
}

然后:

using ColorDescriptions; // Use static methods from `ColourDescriptions` as mixins
...
trace( "red".description() ); // "passionate"

这仅适用于方法/函数,而不适用于属性。因此"red".description()是可能的,但"red".description不是。