0 Pluspunkte 0 Minuspunkte

Ich habe eine Klasse in Ruby

class Player
 
  def initialize(name, points)
    @name = name
    @points = points
  end
 
  def getPoints
    return @points
  end
 
  def say_hello
    puts "Hello, #{@name}!"
  end
end

Wenn ich auf die Variable points zugreifen möchte 

if person.points > 5
    person.say_hello 
end

bekomme ich einen Fehler das die Methode nicht gefunden wurde.

test.rb:26:in `<main>': undefined method `points' for #<Person:0x0000558641f4b420 @name="Alice", @points=30> (NoMethodError)

Wenn ich mit der Funktion getPoints darauf zugreife 

if person.getPoints > 5
    person.say_hello
end

dann funktioniert es. Kann ich nicht direkt auf die Variablen zugreifen?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du brauchst einen Attribute Accessor in deiner Klasse.

attr_accessor :name, :points

dann kannst du einfach auf Variablen der Klasse zugreifen.

von