On Sun, Jul 10, 2011 at 2:35 PM, Dmitry A. Soshnikov <
[email protected]> wrote:
> **
> On 10.07.2011 21:32, Allen Wirfs-Brock wrote:
>
>
> On Jul 10, 2011, at 10:23 AM, Brendan Eich wrote:
>
> On Jul 10, 2011, at 10:18 AM, Rick Waldron wrote:
>
> The more I think about it, I still can't come up with any really exciting
> use cases where Array.of would outshine anything that already exists. I
> say strike it from the wishlist.
>
>
> Higher-order programming with Array as constructing-function bites back
> for the single-number-argument case. That's where Array.of helps.
>
>
> Yes, if you actually need to pass Array.of as a function argument. Of
> course if we have block lambdas you could just say:
>
> hof({|a|[a]})
> instead of
> hof(Array.of)
>
>
> Can you show a real use-case of it please?
>
> Dmitry.
>
A real use-case for this functions:
http://yuilibrary.com/forum/viewtopic.php?f=18&t=7978
YUI uses get/set methods for dealing with attributes and has a declarative
form for them that looks like this:
Y.SomeClass = Y.Base.create('someClass', Y.Superclass, [Y.Mixin], proto, {
ATTRS: {
someAttr: {
value: []
}
}
});
Using [] as a default value can lead to bugs because the class will hold a
reference to a unique array in all instances. Using a constructor function
one can be sure each instance will have a fresh array.
Y.SomeClass = Y.Base.create('someClass', Y.Superclass, [Y.Mixin], proto, {
ATTRS: {
someAttr: {
valueFn: Array
}
}
});
Here valueFn calls the provided function to create the default value each
time. In this case it would create a new array. Array creation functions
would help create more complex patters and avoid bugs with unexpected
parametes (tough now I think Array.bind(null, 0) maybe could work...
Juan
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss