如何在ruby中调用实例变量

Mc-*_*-Ac 1 ruby variables if-statement instance

我最近学会了如何创建类,虽然我不完全确定我应该使用它们的位置和原因.我用它们来创建具有类似方法/属性的对象.

我试着制作一个插科打码,但我偶然发现了一个我无法找到答案的问题.

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 }
Run Code Online (Sandbox Code Playgroud)

即使这段代码有效,我想知道是否可以在课堂外使用/调用mihchael的hp?也许有点像哈希?michael[@hp]?但即使我将hp设置为全局变量,这也不起作用.是否所有检查对象属性的if/else语句都在类中?

非常感谢你

tad*_*man 5

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

class Person
  attr_reader :name
  attr_reader :hp
end
Run Code Online (Sandbox Code Playgroud)

然后在课外,您可以调用以下内容:

puts "#{michael.name} has only #{michael.hp} HP left"
Run Code Online (Sandbox Code Playgroud)

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

  • @CarySwoveland是的,但这相当于伸手去拿别人的裤子.这不是很有礼貌.访问器是请求权限的最佳方式,此外,它意味着类可以自由更改这些值的存储方式. (4认同)