我觉得这是我理解 Ruby 和一般面向对象编程的基础,所以我冒着看起来很愚蠢的风险在这里问这个相当简单的问题。我一直在玩弄irb。我创建了我的第一个类:
$ irb
ruby-1.9.2-p290 :001 > class Person
ruby-1.9.2-p290 :002?> attr_accessor :firstname, :lastname, :gender
ruby-1.9.2-p290 :003?> end
=> nil
ruby-1.9.2-p290 :004 > person_instance = Person.new
=> #<Person:0x007f9b7a9a0f70>
ruby-1.9.2-p290 :005 > person_instance.firstname = "Bob"
=> "Bob"
ruby-1.9.2-p290 :006 > person_instance.lastname = "Dylan"
=> "Dylan"
ruby-1.9.2-p290 :007 > person_instance.gender = "male"
=> "male"
所以 Person.new
是我的对象,对吧?或者我的对象是 class Person
和我为该类定义的属性的组合?
最佳答案
您的对象是运行 Person.new
的结果,您已在 person_instance
中捕获它。
在 ruby 中,属性在第一次写入之前并不实际存在,因此在 person_instance.firstname = "Bob"
之前,您的实例没有属性。执行此语句后,它具有 @firstname
属性,但没有其他属性。
关于ruby - 我是否正确理解了 Ruby 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762056/