书籍 《ruby cookbook》里面的一个例子请教

scuwolf · August 27, 2013 · Last by scuwolf replied at August 27, 2013 · 2244 hits
class SortedArray < Array
  def initialize(*args,&sort_by)
    @sort_by = sort_by || Proc.new { |x,y| x <=> y }
    super(*args)
    sort! &sort_by
  end
end

p SortedArray.new([1,3,2])

sort! &sort_by 为什么 block 参数是&sort_by而不是&@sort_by呢? sort_by 在这里并没有默认值啊,但是居然也可以输出正确的结果!

@scuwolf sort_by 不就是你传的 block 吗?

哦,终于知道了

这里 &sort_by 没问题,因为 sort! 默认调用的就是 { |x,y| x <=> y }

You need to Sign in before reply, if you don't have an account, please Sign up first.