代码之家  ›  专栏  ›  技术社区  ›  michaelmichael

这两个Ruby类初始化定义有什么区别?

  •  5
  • michaelmichael  · 技术社区  · 16 年前

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用了与本书前几节略有不同的形式。看起来是这样的:

    class Ticket
      attr_accessor :venue, :date
      def initialize(venue, date)
        self.venue = venue
        self.date = date
      end
    end
    

    在本书的前几节中,它的定义如下:

    class Ticket
      attr_accessor :venue, :date
      def initialize(venue, date)
        @venue = venue
        @date = date
      end
    end
    

    class Ticket
      attr_accessor :venue, :date
      def initialize(venue, date)
        @venue = venue
        self.date = date
      end
    end
    
    1 回复  |  直到 16 年前
        1
  •  10
  •   sepp2k    15 年前

    因为setter方法是由 attr_accessor

    使用setter方法的唯一好处是,如果您以后应该更改setter方法来做一些比设置变量更多的事情(比如验证输入或记录一些事情),那么 initialize

    推荐文章