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

scuwolf · 2013年08月27日 · 最后由 scuwolf 回复于 2013年08月27日 · 2249 次阅读
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 }

需要 登录 后方可回复, 如果你还没有账号请 注册新账号