[Laszlo-dev] as3 compiler doesn't like fancy default values
P T Withington
ptw at pobox.com
Thu Sep 11 05:27:16 PDT 2008
On 2008-09-10, at 22:57EDT, Henry Minsky wrote:
> When we have default values like this, something complains in the flex
> compiler
>
> function toArray (linkMaker=function (rep, id) {return
> Debug.ObjectForID(id);}):Array {
>
> [java] [/tmp/lzswf9/lzgen27609/LzDebugMessage.as: 188]
> debugger/LzMessage.lzs: 200: Error: Parameter initializer unknown or
> is not
> a compile-time constant.
>
> So I have been converting complex initializers like that into null
> default
> args, and initializing in the function body, like this
>
> + function toArray (linkMaker=null):Array {
> + if (linkMaker == null) {
> + function (rep, id) {return Debug.ObjectForID(id);}
So long as you really meant:
+ linkMaker = function (rep, id) {return Debug.ObjectForID(id);}
I think that's ok.
> + }
The other possibility:
function defaultLinkMaker (rep, id) {return Debug.ObjectForID(id);}
function toArray(linkMaker=defaultLinkMaker) ...
Personally, I think Flex's restrictions on what can be in a default
value are a bug. You aren't allowed to have any sort of expression at
all, you can't default a parameter based on a preceding parameter,
etc. Too bad.
More information about the Laszlo-dev
mailing list