2012-09-01 73 views
2

我想讓類擴展可用於其他模塊/類/文件。例如:如何從其他模塊中包含Ruby類擴展?

module UsefulStuff 
    class Object 
    def blank? 
     respond_to?(:empty?) ? empty? : !self 
    end 
    end 
end 
其他類/模塊/文件

if string.blank? ... 

什麼?我如何包括/負載/需要/ ...,使這項工作?

+2

您是否想將'blank?'方法添加到所有對象? –

+0

在空白的情況下,是的,它應該適用於所有有空的類?方法(String,Array,Hash)。然而,更一般地說,我的問題是,當我擴展一個類時,如何將它包含在其他文件中,以便其他文件中的對象可以看到擴展名?您能否提供一個例子,其中類擴展名在一個文件中,並且它的使用位於另一個文件中(可能是一個模塊,一個類,或者只是一個包含主代碼的腳本)。 – davidg

+0

查看Nucc的答案,這是你想要的。 –

回答

4

您應該使用而不是類模塊:

module UsefulStuff 
    module Blank 
    def blank? 
     respond_to?(:empty?) ? empty? : !self 
    end 
    end 
end 

,你可以將其包含在String類:

class String 
    include UsefulStuff::Blank 
end 

,或者如果你希望它的對象是全球性的:

class Object 
    include UsefulStuff::Blank 
end