On Apr 13, 2012, at 11:46 AM, Allen Wirfs-Brock wrote:

> On Apr 13, 2012, at 11:22 AM, David Herman wrote:
> 
>> On Apr 13, 2012, at 10:53 AM, Allen Wirfs-Brock wrote:
>> 
>>> That sentinel could simply be a empty argument position:
>>> 
>>>        new Intl.Collator( , {usage: "search"});
>> 
>> That's not enough. It doesn't allow you to make a dynamic decision as to 
>> whether or not to pass that argument, which still leaves you in general with 
>> the combinatorial explosion.
> 
> sure you can
> 
> Intl.Collator = function(...args) {
>   let [locale=defaultLocale, options={}] = args;
>   let localeDefaulted = args.hasOwnProperty("0")
>   ...
> }

I'm talking about the caller code. If the caller needs to make a dynamic 
decision about whether to provide argument 0, it has to write:

    let locale = foo.getLocaleIfTheresOneAvailable();
    locale === undefined ? new Intl.Collator(locale, {usage: "search"})
                         : new Intl.Collator(, {usage: "search"})

That's bad enough with only one. Now when you scale that up to multiple 
optional arguments you get combinatorial explosion. The semantics that always 
defaults undefined just allows you to write

    new Intl.Collator(foo.getLocaleIfTheresOneAvailable(), {usage: "search"})

Dave

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to