joshtynjala commented on issue #885:
URL: https://github.com/apache/royale-asjs/issues/885#issuecomment-654960494


   It looks like there are a couple of things going on here.
   
   1) First, you are confusing the implement implicit `arguments` object that 
is available in every function in JS/AS3 with AS3's optional "rest" parameter. 
They are actually two different things. `arguments` is always available, and 
doesn't need to be declared. The "rest" parameter must be declared.
   
   You can actually see that this is the case because the arguments.html link 
that you included recommends using the "rest" parameter instead of `arguments`:
   
   > ActionScript 3.0 includes a new ...(rest) keyword that is recommended 
instead of the arguments class.
   
   2) There does seem to be some kind of bug in Royale, though. It looks like 
when you name the "rest" parameter `arguments`, it conflicts with the implicit 
`arguments` object. Perhaps JS behaves a little bit differently than AS3 and 
doesn't allow the implicit `arguments` variable to be shadowed. So, for our 
generated JS, the compiler probably need to check if the "rest" parameter is 
named `arguments` and then use a different name instead.
   
   It's worth mentioning that the final "rest" parameter after the ... can be 
named anything. It is not required to be named `arguments` or `Arguments`. 
Because it is called a "rest" parameter, people often name it `rest`. But you 
could choose `params`, `args`, `extra`, or `royaleIsSuperCool` if you wanted, 
and they should all work fine.
   
   ```
   public function call(...rest):void
   {
   }
   ```
   
   I would recommend avoiding `arguments` as the name, though, even after this 
issue is fixed in Royale. Since `arguments` is also the existing name of 
something different, you have the potential of confusing people who are not 
reading your code carefully enough.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to