2014-10-28 48 views
0

例如,我有一個有4種方法的類。在第四種方法中,我想調用一個隨機方法。我不知道如何從現有方法調用隨機方法

例如,這種方法可以稱之爲 「第一」, 「第二」 或 「第三」

class Test 

    def first 
    puts "1" 
    end 
    def second 
    puts "2" 
    end 
    def third 
    puts "3" 
    end 

    def some 

    end 
end 

test = Test.new 
test.some 

回答

0
def some 
    method_name = (self.public_methods - Object.instance_methods).sample 
    public_send(method_name) 
end 

這可能會爲你做它:)

2
class Test 

    def first 
    puts "1" 
    end 

    def second 
    puts "2" 
    end 

    def third 
    puts "3" 
    end 

    def some 
    public_send (self.class.instance_methods(false) - [__method__]).sample 
    end 
end 

test = Test.new 
test.some 
# >> 1 
+1

很好的使用'__m ethod__'。 – 2014-10-28 17:39:59

2
def some 
    send public_methods(false).sample 
end 

some這裏可以調用some :)

+0

雅,但誰在乎;)即使它它會最終調用隨機方法之一。 – nzifnab 2014-10-28 16:57:04

+1

另外,TIL:你可以發送'false'到'public_methods'和'instance_methods'來獲得對象的* own *方法。 – nzifnab 2014-10-28 16:57:57

+0

@nzifnab我將'false'作爲參數傳遞給'public_methods',不是嗎? – fl00r 2014-10-28 17:00:40

相關問題