[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