Hi,
I have what I think is both a simple problem and a simple solution, but I just can’t seem to get it to work.
I have a class that has multiple remoting call type methods (ie. it talks to the server and fires other methods on a response or fault). One thing I a need to do is to make sure that all parameters passed to these methods are **not undefined **or **null.
**So here is the proposed solution:
ActionScript Code:
[FONT=Courier New][LEFT][COLOR=#000000]var[/COLOR] a:[COLOR=#0000FF]String[/COLOR] = [COLOR=#FF0000]“ah”[/COLOR];
[COLOR=#000000]var[/COLOR] b:[COLOR=#0000FF]String[/COLOR];
[COLOR=#000000]var[/COLOR] c:[COLOR=#0000FF]String[/COLOR];
[COLOR=#000000]function[/COLOR] mainFunc [COLOR=#000000]([/COLOR]x, y, z[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]Void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]arguments[/COLOR].[COLOR=#0000FF]caller[/COLOR][COLOR=#000000][[/COLOR][COLOR=#0000FF]arguments[/COLOR][COLOR=#000000]][/COLOR] = argChk COLOR=#000000[/COLOR];
[COLOR=#0000FF]trace[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#FF0000]“function arguments: “[/COLOR] + [COLOR=#0000FF]arguments[/COLOR][COLOR=#000000])[/COLOR];
testParam COLOR=#000000[/COLOR] [COLOR=#808080]//traces “ah”[/COLOR]
testParam COLOR=#000000[/COLOR] [COLOR=#808080]//traces undefined[/COLOR]
testParam COLOR=#000000[/COLOR];[COLOR=#808080]//traces undefined[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]function[/COLOR] argChk COLOR=#000000[/COLOR]:[COLOR=#0000FF]Array[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#000000]var[/COLOR] newParam:[COLOR=#0000FF]Array[/COLOR] = [COLOR=#000000]new[/COLOR] [COLOR=#0000FF]Array[/COLOR] COLOR=#000000[/COLOR];
[COLOR=#808080]//[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#000000]var[/COLOR] i [COLOR=#0000FF]in[/COLOR] param[COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]//trace (param);*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR]param[COLOR=#000000][[/COLOR]i[COLOR=#000000]][/COLOR] == [COLOR=#0000FF]undefined[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#FF0000]“parameter “[/COLOR] + i + [COLOR=#FF0000]” is undefined”[/COLOR][COLOR=#000000])[/COLOR];
param[COLOR=#000000][[/COLOR]i[COLOR=#000000]][/COLOR] = [COLOR=#FF0000]””[/COLOR];
[COLOR=#000000]}[/COLOR]
newParam.[COLOR=#0000FF]unshift[/COLOR] COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]return[/COLOR] newParam;
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]function[/COLOR] testParam COLOR=#000000[/COLOR]:[COLOR=#0000FF]Void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR] COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[/LEFT]
[/FONT]
And this is what I want instead:
ActionScript Code:
[FONT=Courier New][LEFT][COLOR=#000000]var[/COLOR] a:[COLOR=#0000FF]String[/COLOR] = [COLOR=#FF0000]“ah”[/COLOR];
[COLOR=#000000]var[/COLOR] b:[COLOR=#0000FF]String[/COLOR];
[COLOR=#000000]var[/COLOR] c:[COLOR=#0000FF]String[/COLOR];
[COLOR=#000000]function[/COLOR] mainFunc [COLOR=#000000]([/COLOR]x, y, z[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]Void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]arguments[/COLOR].[COLOR=#0000FF]caller[/COLOR][COLOR=#000000][[/COLOR][COLOR=#0000FF]arguments[/COLOR][COLOR=#000000]][/COLOR] = argChk COLOR=#000000[/COLOR];
[COLOR=#0000FF]trace[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#FF0000]“function arguments: “[/COLOR] + [COLOR=#0000FF]arguments[/COLOR][COLOR=#000000])[/COLOR];
testParam COLOR=#000000[/COLOR] [COLOR=#808080]//traces “ah”[/COLOR]
testParam COLOR=#000000[/COLOR] [COLOR=#808080]//traces “”[/COLOR]
testParam COLOR=#000000[/COLOR];[COLOR=#808080]//traces “”[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]function[/COLOR] argChk COLOR=#000000[/COLOR]:[COLOR=#0000FF]Array[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#000000]var[/COLOR] newParam:[COLOR=#0000FF]Array[/COLOR] = [COLOR=#000000]new[/COLOR] [COLOR=#0000FF]Array[/COLOR] COLOR=#000000[/COLOR];
[COLOR=#808080]//[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#000000]var[/COLOR] i [COLOR=#0000FF]in[/COLOR] param[COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]//trace (param);*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR]param[COLOR=#000000][[/COLOR]i[COLOR=#000000]][/COLOR] == [COLOR=#0000FF]undefined[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#FF0000]“parameter “[/COLOR] + i + [COLOR=#FF0000]” is undefined”[/COLOR][COLOR=#000000])[/COLOR];
param[COLOR=#000000][[/COLOR]i[COLOR=#000000]][/COLOR] = [COLOR=#FF0000]””[/COLOR];
[COLOR=#000000]}[/COLOR]
newParam.[COLOR=#0000FF]unshift[/COLOR] COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]return[/COLOR] newParam;
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]function[/COLOR] testParam COLOR=#000000[/COLOR]:[COLOR=#0000FF]Void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR] COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[/LEFT]
[/FONT]
As you can see, I can change the parameters once inside the function to be checked, however those are simply references now and not the same parameters being passed onto other nested functions.
If I can get this to work, it will save hours on parameter checking that would otherwise require that I copy and paste a checker in about a jillion places on this project. Any help would be greatly appreciated.