Citrus-Engine icon indicating copy to clipboard operation
Citrus-Engine copied to clipboard

Might be worth testing ( simpler/safer initialisation of parameters ) ?

Open Snky opened this issue 8 years ago • 1 comments

    /**
     * Hello guys! This works fine for me, even for the booleans,
     * not sure if there was a special reason for setting booleans manually
     * No errors can be thrown now, if the property doesn't exist on the object
     * thanks to the "in" bit, works better than hasOwnProperty(param)
     */
    public function setParams(object : Object, params : Object) : void {
        var param : String;
        for (param in params) {
            if (param in object) object[param] = params[param];
        }
    }


    /**
     * The initialize method usually calls this.
     */
    public function setParams(object : Object, params : Object) : void {
        for (var param : String in params) {
            try {
                if (params[param] == "true")
                    object[param] = true;
                else if (params[param] == "false")
                    object[param] = false;
                else
                    object[param] = params[param];
            } catch (e : Error) {
                if (!hideParamWarnings)
                    trace("Warning: " + e.message + " " + this);
            }
        }
    }

Snky avatar Jul 11 '16 22:07 Snky

Well, either way, if there are good reasons for the way it's implemented, I think the "(param in object)" bit will help, you can throw thousands of parameters at the object then, and it will just ignore those properties if they are not present in that class.

-edit- After further testing, it does not seem to pick up all the variables within a class, probably unstable then.

Snky avatar Jul 11 '16 22:07 Snky