如何向Array#size添加方法?

时间:2014-05-16 03:20:03

标签: ruby

我想向one?添加Array#size方法,以便我可以这样说:

class Array
  def one?
    self.size == 1
  end
end

[1].size.one?
 #=> true
[1,2].size.one?
 #=> false

2 个答案:

答案 0 :(得分:6)

如果您看到class的{​​{1}},则为[1].size,因此如果您想在Fixnum上链接one?功能,则必须定义对于[1].size类也是如此,如下所示:

Fixnum

现在,以下内容也有效:

class Fixnum
  def one?
    self == 1
  end
end

答案 1 :(得分:0)

由于size返回Fixnum,因此必须在那里定义它才能正常工作。

class Fixnum
  def one?
    self == 1
  end
end

[1].size.one?
#=> true


为什么同样的答案? 与其他答案同时发布,因此决定将其搁置。