【问题标题】:How make a variable public final in Ruby如何在 Ruby 中将变量设为 public final
【发布时间】:2013-08-12 14:53:59
【问题描述】:

我想创建一个类,在该类的对象初始化期间将提供的值分配给其中一个变量,这样它就无法更改。 例如:

person = Person.new("Tom")
person.name  #=> Tom
person.name = "Bob"

这应该会引发错误或:

person.name #=> Tom -> still

【问题讨论】:

  • 听起来你在谈论“最终”变量,它在 Ruby 中不存在。但是看看这个:stackoverflow.com/questions/2441524/…
  • 如果你不想在 Person 上定义name=,为什么要先定义它?
  • 这是一个例子,以防有人试图再次设置它,我想阻止它

标签: ruby variables immutability


【解决方案1】:

我认为这会对你有所帮助:static variables in ruby

class Foo
 @@foos = 0

 def initialize
 @@foos += 1
 end

 def self.number_of_foos
 @@foos
 end
end

Foo.new
Foo.new
Foo.number_of_foos #=> 2

【讨论】:

    【解决方案2】:
    class Person
      def initialize name
        @name = name
      end
      attr_reader :name
    end
    
    person = Person.new("Tom")
    person.name         #=> Tom
    begin
      person.name = "Bob"
    rescue
      puts $!.message   # => Undefined method error
    end
    person.name         #=> Tom
    

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 2013-08-08
      • 2023-04-10
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多