On May 16, 2007, at 1:49 PM, Dan Zwell wrote:

> I have subclassed Array to add some features. I am redefining  
> sort_by so that it does not return an Array but a Pairs (my  
> subclass), but I cannot get the syntax for passing the blocks right.
>
> Here's my code:
<snip>
>    alias_method :sort_by_old, :sort_by
>    # PROBLEM here:
>    def sort_by(&block)
>      ary = self.sort_by_old {yield(block)}
>      Pairs.new(ary)
>    end

Use this instead:
ary = self.sort_by_old(&block)

 >> p=Pairs["abcd", "efg", "hi", "j"]
=> ["abcd", "efg", "hi", "j"]
 >> p.class
=> Pairs
 >> q=p.sort_by{|x| x.length}
=> ["j", "hi", "efg", "abcd"]
 >> q.class
=> Pairs

-Mark