On Dec 23, 2012, at 5:35 PM, Brandon Benvie wrote:

> Here's one of the examples that was sticking out in my mind earlier that 
> Brendan's solution takes care of. Array.prototype.reduce requires that if the 
> initial value isn't provided then the first value of the array is the initial 
> value.
> 
> Using rest:
> 
>     function reduce(callback, ...initial){
>       var current, index;
> 
>       if (initial.length) {
>         index = 0;
>         current = initial[0];
>       } else {
>         index = 1;
>         current = this[0];
>       }
>     
>       ...etc...
>     }
> 
> 
> Using arguments.length:
> 
>     function reduce(callback, initial){
>       var current, index;
>       
>       if (arguments.length > 1) {
>         index = 0;
>         current = initial;
>       } else {
>         index = 1;
>         current = this[0];
>       }
>     
>       ...etc...
>     }
> 
> 
> 
> I guess using rest like that is not a bad way to solve it, though it's not 
> saying what you mean but rather kind of hacking around the limitation. Either 
> way, it's certainly possible to forgo using arguments to accomplish the goal.

the way I would express this example  is:

function reduce(callback, ...rest){
  var current, index;
  if (rest.length > 0) {
        index = 0;
        current = rest[0];
      } else {
        index = 1;
        current = this[0];
      }
  ...etc...
}

which seems to exactly express the intent

Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to