如何在 ruby 中调用实例变量

How to call instance variables in ruby

我最近学会了如何创建 classes,尽管我完全 不确定我应该在哪里以及为什么要使用它们。 我会用它们来创建具有类似 methods/properties.

的对象

我尝试制作一个堵嘴代码,但我偶然发现了一个我找不到答案的问题。

class Person
  def initialize(name,health)
    @name = name
    @hp = health
  end

  def kick
    @hp -= 1
    if (@hp <= 0)
      puts "#{@name} got REKT!"
    end
  end

end

#Friends
michael = Person.new("Michael", 10)

10.times { michael.kick }

尽管此代码有效,但我想知道是否有可能 use/call mihchael 的生命值超出 class?也许有点像哈希? michael[@hp]?但这不起作用,即使我将 hp 设置为全局变量。 所有检查对象属性的 if/else 语句都应该在 class 中吗?

非常感谢

在 Ruby 中执行此操作的标准方法是创建访问器:

class Person
  attr_reader :name
  attr_reader :hp
end

然后在 class 之外你可以这样调用:

puts "#{michael.name} has only #{michael.hp} HP left"

创建对象的原因是将代码和数据组织到逻辑上下文和容器中。