18 - controlling access by making methods private.rb

来自「O Reilly Ruby Cookbook source code」· RB 代码 · 共 104 行

RB
104
字号
class SecretNumber  def initialize    @secret = rand(20)  end  def hint    puts "The number is #{"not " if secret <= 10}greater than 10."  end  private   def secret    @secret  endends = SecretNumber.news.secret# NoMethodError: private method `secret' called for #  #<SecretNumber:0xb7c2e83c @secret=19>s.hint# The number is greater than 10.#---class LessSecretNumber < SecretNumber  def hint    lower = secret-rand(10)-1    upper = secret+rand(10)+1    "The number is somewhere between #{lower} and #{upper}."  endendls = LessSecretNumber.newls.hint# => "The number is somewhere between -3 and 16."ls.hint# => "The number is somewhere between -1 and 15."ls.hint# => "The number is somewhere between -2 and 16."#---class MyClass  def public_method1  end  def public_method2  end  protected    def protected_method1  end  private  def private_method1  end  def private_method2  endend#---class LessSecretNumber  def compare(other)    if secret == other.secret    comparison = "equal to"     else      comparison = secret > other.secret ? "greater than" : "less than"    end    "This secret number is #{comparison} the secret number you passed in."  end  enda = LessSecretNumber.newb = LessSecretNumber.newa.hint# => "The number is somewhere between 17 and 22."b.hint# => "The number is somewhere between 0 and 12."a.compare(b)# NoMethodError: private method `secret' called for # #<LessSecretNumber:0xb7bfe13c @secret=6>#---class SecretNumber  protected :secretenda.compare(b)# => "This secret number is greater than the secret number you passed in."b.compare(a)# => "This secret number is less than the secret number you passed in."#---class MethodWithManySecrets  :private    # This method will show up in the RDoc, even though it's private.  def secret_method_1  end  # This method will not show up in the RDoc.  def secret_method_2 # :nodoc:  endend#---s.send(:secret)                                # => 19 #---

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?