Я искал решение для этого, но наиболее подходящие ответы, кажется, прописывают, используя self.
, что я уже делаю; Я не могу сформулировать свой поиск таким образом, чтобы я мог найти то, что я делаю неправильно. Я определяю класс, как показано ниже, но когда я пытаюсь создать экземпляр, я получаю
NoMethodError:
undefined method `valid_pegs?' for #<Code:0x00007fffc58d1608>
. Вместо этого я попытался определить valid_pegs?
как метод экземпляра, который я могу использовать, если Назовите это так, но это проблема для курса, и я должен определить его как метод класса.
Так почему же он не работает?
class Code
POSSIBLE_PEGS = {
"R" => :red,
"G" => :green,
"B" => :blue,
"Y" => :yellow
}
attr_reader :pegs
def self.valid_pegs?(peg_arr)
outcome = true
peg_arr.each {|peg| outcome = false if !POSSIBLE_PEGS.include?(peg.upcase)}
return outcome
end
def initialize(peg_arr)
if !self.valid_pegs?(peg_arr)
raise "Those are not all valid pegs"
else
@pegs = []
peg_arr.each {|peg| @pegs << peg.upcase}
end
end
end