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

问题描述 投票:1回答:1

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

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

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

我看到人们使用它来进行本地化,比如"Car".i18()

任何人都可以帮忙吗?

haxe
1个回答
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不是。

© www.soinside.com 2019 - 2024. All rights reserved.