【问题标题】:Get / Set on a Dynamic Object in Haxe using Reflect and String id使用 Reflect 和 String id 在 Haxe 中获取/设置动态对象
【发布时间】:2014-05-06 19:02:31
【问题描述】:

我有这个要移植到 haxe 的 actionScript3 代码。

public static const DATA_COMPLETE_LEVELS : String   = "save_game_data_complete_levels";
private var _completedLevelKeys:Vector.<String>;


public function get completedLevelKeys():Vector.<String> {
    if (this.data[DATA_COMPLETE_LEVELS])
        return (Vector.<String>)(this.data[DATA_COMPLETE_LEVELS]);
    return null;

}           
public function set completedLevelKeys(value:Vector.<String>):void {
    if(value)
        this.data[DATA_COMPLETE_LEVELS] = (Vector.<String>)(value);
}

我只是用haxe弄脏了我的手,我对Reflect有点困惑

Haxe 中的等效代码是什么?

【问题讨论】:

  • 私有变量有什么用?好像根本没用过。
  • 你说得对,我可能是想检查 get/set 中是否为 null,并在我设计 Class 时相应地更新私有 var。但是在实现它时,我意识到我不需要更新这个 var,只需要更新 .data 对象。我会考虑删除私人声明。谢谢你的回答!

标签: actionscript-3 haxe haxeflixel


【解决方案1】:

这应该可行:

public static inline var DATA_COMPLETE_LEVELS = "save_game_data_complete_levels";

public var completedLevelKeys(get, set) : Vector<String>;

function get_completedLevelKeys() : Vector<String>
    return Reflect.field(this.data, DATA_COMPLETE_LEVELS);

function set_completedLevelKeys(values : Vector<String>) : Vector<String>
{
    if(null != values)
        Reflect.setField(this.data, DATA_COMPLETE_LEVELS, values);
    return values;
}

【讨论】:

    【解决方案2】:

    你的意思当然是这个(Haxe 3+)

    function get_completedLevelKeys() : Vector<String>
    
    function set_completedLevelKeys(values : Vector<String>) : Vector<String>
    

    【讨论】:

    • 你是对的,虽然你最好把这个写成对已经接受的答案的评论
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 2015-01-27
    • 1970-01-01
    • 2011-12-09
    • 2023-03-20
    • 2018-12-15
    • 2011-01-25
    相关资源
    最近更新 更多