I have to look up the template meanings most times, myself, but I
personally think of “pack” as packing binary data. I think that
looking at this as pack-from-array and unpack-to-array is not
necessarily productive.
“Austin”.unpack(“A*”) # => [“Austin”]
There are others where this is the case, too. Not everything will
be:
“Austin”.unpack(“c*”) # => [65, 117, 115, 116, 105, 110]
I’m finding that the code I’m working with has several cases where I
could use String#pack or Fixnum#pack because I’m having to do:
[foo].pack(template)
… and it’s in loops, so the minimal inefficiency in creating an
anonymous Array will add up over time. (I don’t have anything that I
can profile at this point, so I can’t prove that it’s
inefficient.)
I don’t think that this is too “magic”; I think that having to
create an anonymous array feels wrong, personally.
BTW, Brian, the inefficiency of creating an anonymous Array – in a
loop – is precisely why I want String#pack and Fixnum#pack (I don’t
want a generic #pack); a Float#pack may be useful.
I think that it could be possible to have these be named differently
(per Matz’s suggestion); perhaps #encode? I donno.
-austin
– Austin Ziegler, austin@halostatue.ca on 2003.05.06 at 16:38:07
···
On Tue, 6 May 2003 23:18:29 +0900, dblack@superlink.net wrote:
On Tue, 6 May 2003, Austin Ziegler wrote:
This is guaranteed to be at least a minor inefficiency because a
temporary anonymous array needs to be created. Is there a good
reason why String can’t have a #pack method that Does The Right
Thing?
I approach this with trepidation, because (un)pack is one of these
things that I have to look up and talk myself through every time I
use it… but, for what little it’s worth, I always thought there
was a pretty direct and sensible idea behind this, namely that one
packed things into a string and unpacked them into an array.