On 10.07.2011 23:25, Juan Ignacio Dopazo wrote:

On Sun, Jul 10, 2011 at 2:35 PM, Dmitry A. Soshnikov <dmitry.soshni...@gmail.com <mailto:dmitry.soshni...@gmail.com>> 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
    <http://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 <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...


I see. Though, the case with `Array.bind(null, 0)` seems is particular for YUI.

Anyway, from what I can say now `Array.of` is a "fixed" version of `Array` which doesn't have a special case of `Array(length)`, but always considers it as Array(items...). Don't know how rare/often this case is. Sometimes it's needed vice-versa to create Array(length). I also think we should consider other proposals of arrays library which I mentioned in previous letter.

Dmitry.

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

Reply via email to