On Sun, Dec 23, 2012 at 10:46 PM, Axel Rauschmayer <[email protected]> wrote:
> How about the following solution?
>
> let missingArgument = {}; // or a symbol
> function reduce(callback, initial = missingArgument){
> let startIndex;
>
An explicit undefined will trigger the default value, in this case
resulting in the missingArgument to be used
See: https://mail.mozilla.org/pipermail/es-discuss/2012-July/024207.html
Rick
>
> if (initial === missingArgument) {
> initial = this[0];
> startIndex = 1;
> } else {
> startIndex = 0;
> }
>
> ...etc...
> }
>
> On Dec 24, 2012, at 3:32 , Allen Wirfs-Brock <[email protected]>
> wrote:
>
> 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...
> }
>
>
> 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
>
>
> --
> Dr. Axel Rauschmayer
> [email protected]
>
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss