在Ruby中解剖一个类?

时间:2012-05-19 08:33:24

标签: ruby class

如果你被要求为教学目的写一个简单的课程,你会怎么做?我正在思考整洁和指示性。一个可以产生物体的物体。也许有一些变量类型而不会太复杂。

作为一个建议,它可能是一个Person类,每个对象有三个属性:名称,国籍,问候语,但我不确定这是否适合最小代码行的最大教学价值?

我希望得到一位专家的回答,该专家写了数千个Ruby课程,并且可以将他们的专业知识提炼成完美的教学课程。

1 个答案:

答案 0 :(得分:3)

如果你需要的只是在实例变量中跟踪状态,你可以向人们展示最简单的类:

class Person < Struct.new(:name, :nationality, :greeting) ; end

puts Person.new("b1_", "Somewhere", "Heydiho")
#=> #<struct Person name="b1_", nationality="Somewhere", greeting="Heydiho">

下一步,以更“传统”的方式显示定义的类:

class Person
  attr_accessor :name, :nationality, :greeting

  def initialize(name, nationality, greeting)
    @name = name
    @nationality = nationality
    @greeting = greeting
  end

  def to_s
    "#@name is from #@nationality and says \"#@greeting\""
  end

  def say_hi(name)
    "#@greeting, #{name}"
  end
end

然后你可以用attr_accessor做类似的事情,最后用自定义的setter和getter做。恕我直言,显示了很好的进展。