2014-02-26 62 views
0

我是一名PHP程序員。剛開始學習Ruby。我對ruby的私人聲明感到困惑。如何在ruby中定義私有方法?

可以說我有這樣的

private 
def greeting 
    random_response :greeting 
end 

def farewell 
    radnom_response :farewell 
end 

代碼不公開的,只有適用於問候或兩者的問候和告別?

+0

它適用於這兩種方法.... – gabrielhilal

回答

4

這是相當標準的將私有/受保護的方法放在文件的底部。 private之後的所有內容都將成爲私人方法。

class MyClass 

    def a_public_method 

    end 

    private 

    def a_private_method 
    end 

    def another_private_method 
    end 

    protected 
    def a_protected_method 
    end 

    public 
    def another_public_method 
    end 
end 

正如你可以看到在這個例子中,如果你真的需要你可以通過使用關鍵字public回去聲明公有方法。

它也可以更容易地看到通過縮進您的私人/公共方法的另一個級別範圍的變化,看到在視覺上,他們分組下private節等

您也可以選擇只申報一次性的私有方法是這樣的:

class MyClass 

    def a_public_method 

    end 

    def a_private_method 
    end 

    def another_private_method 
    end 
    private :a_private_method, :another_private_method 
end 

使用private模塊的方法來只申報單的方法是私有的,但坦率地說,除非你總是每個方法聲明之後做它可以是一個有點混亂,這種方式找到私有方法。我只是喜歡把它們粘在底部:)

1

它適用於一切在privategreetingfarewell

爲了使其中一方的私有可以使greeting單獨的私人如下:

def greeting 
    random_response :greeting 
end 
private :greeting 

def farewell 
    radnom_response :farewell 
end 

文檔可以在Module#private

0

在Ruby 2.1中定義的方法返回它們的名字,所以你可以調用private來傳遞函數定義的類。您也可以將方法名稱傳遞給private。任何在沒有任何參數的情況下定義的private將是一種私人方法。

這給你留下聲明私有方法的三種不同的方法:

class MyClass 
    def public_method 
    end 

    private def private_method 
    end 

    def other_private_method 
    end 
    private :other_private_method 

    private 
    def third_private_method 
    end 
end 
相關問題