2014-05-16 60 views
0

我想一個one?方法添加到Array#size,這樣我可以說:如何向Array#大小添加方法?

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

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

這不是一個類方法,它是一個實例方法。 – baash05

回答

6

如果你看到的[1].sizeclass,它是Fixnum,所以如果你想鏈上[1].sizeone?功能,你將不得不這個定義爲Fixnum類,以及像以下:

class Fixnum 
    def one? 
    self == 1 
    end 
end 

現在下面也將工作:

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

既然size返回一個Fixnum,它必須在那裏定義,因爲它工作正常。

class Fixnum 
    def one? 
    self == 1 
    end 
end 

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


爲什麼同樣的答案嗎? 與其他答案同時發佈,所以決定放棄它。

+0

你爲什麼發佈相同的答案? – Stefan