I think I agree with current wm.get(o, def) which is indeed the one implemented in Firefox and all other shims I have seen so far ... I don't agree about the third argument to set it automatically if not there: a bit too much for a get semantic, imho<br>
<br><div class="gmail_quote">On Mon, Jan 16, 2012 at 10:46 PM, Mark S. Miller <span dir="ltr"><<a href="mailto:erights@google.com">erights@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
David and Axel, I don't get it. What's wrong with the get with the optional default value, as specified by that text and as currently implemented by FF? What additional value does this contingent mutation add, regardless of how it's packaged? Do you really want "has" to answer true for a key merely because a previous get (or setdefault) with that key caused a default value to be stored? Axel, does this add enough value to expand the API by 25%?<div class="HOEnZb">
<div class="h5"><br>
<br><div class="gmail_quote">On Mon, Jan 16, 2012 at 1:26 PM, Axel Rauschmayer <span dir="ltr"><<a href="mailto:axel@rauschma.de" target="_blank">axel@rauschma.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

A separate method such as the previously mentioned setdefault() provided by Python [1] might answer both Mark’s concerns and yours.<br>
<br>
[1] <a href="http://docs.python.org/dev/library/stdtypes.html#mapping-types-dict" target="_blank">http://docs.python.org/dev/library/stdtypes.html#mapping-types-dict</a><br>
<div><div><br>
<br>
On Jan 16, 2012, at 22:21 , David Bruant wrote:<br>
<br>
> [Specifying the Davids]<br>
><br>
> Le 16/01/2012 21:56, Mark S. Miller a écrit :<br>
>> I like the idea of the two argument get as proposed by David [BRUANT].<br>
>> (In fact, I like it so much that I thought I'd already specified it<br>
>> that way ;).) David [HERMAN], I'm glad to see you got it right in your<br>
>> suggestion at<br>
>> <<a href="http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps#alternate_spec_based_on_ff6.0a1" target="_blank">http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps#alternate_spec_based_on_ff6.0a1</a>>.<br>


> Actually, that's not what I meant.<br>
> What I meant was to replace the get that is currently where you link to with<br>
> ------<br>
> get(key, defaultValue = undefined) {<br>
>      if (key !== Object(key)) {<br>
>        throw new TypeError(...); // key must be an object<br>
>      }<br>
>      const i = private(this).keys.indexOf(key);<br>
><br>
>      if(i < 0 && defaultValue !== undefined){<br>
>        this.set(key, defaultValue);<br>
>      }<br>
><br>
>      return private(this).values[i];<br>
> }<br>
> ------<br>
><br>
> In this version, if the key is not found, the property is set to the<br>
> return value.<br>
> The return statement returns the value that is there if the key existed<br>
> in the map or the default value (which has just been assigned).<br>
><br>
> David<br>
><br>
<br>
</div></div><div><div>--<br>
Dr. Axel Rauschmayer<br>
<a href="mailto:axel@rauschma.de" target="_blank">axel@rauschma.de</a><br>
<br>
home: <a href="http://rauschma.de" target="_blank">rauschma.de</a><br>
twitter: <a href="http://twitter.com/rauschma" target="_blank">twitter.com/rauschma</a><br>
blog: <a href="http://2ality.com" target="_blank">2ality.com</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br>    Cheers,<br>    --MarkM<br>
</font></span><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br>