Bellow ist mein erster (und ziemlich alberner Versuch), eine Klasse für den Rubin-Kickstart-Kurs zu erstellen.Wie viele Flaschen Bier an dieser Wand?
In meinem newbish Geist sollte diese Arbeit - aber stattdessen erhalte ich:
rubytest.rb:28:in `<main>': uninitialized constant BeerSong (NameError)
rb: 28 "def print_song"
Class BeerSong
attr_accessor :beers
def initialize(beers)
beers = 0 if beers < 0
beers = 99 if beers > 99
self.beers = beers
end
def print_song
bottlecount = :beers
letters_to_numbers = Hash.new
letters_to_numbers = {
"Ninety" => 90,
"Eighty" => 80,
"Seventy" => 70,
"Sixty" => 60,
"Fifty" => 50,
"Fourty" => 40,
"Thirty" => 30,
"Twenty" => 20,
"Nineteen" => 19,
"Eightteen" => 18,
"Seventeen" => 17,
"Sixteen" => 16,
"Fifteen" => 15,
"Fourteen" => 14,
"Thirteen" => 13,
"Twelve" => 12,
"Eleven" => 11,
"Ten" => 10,
"nine" => 9,
"eight" => 8,
"seven" => 7,
"six" => 6,
"five" => 5,
"four" => 4,
"three" => 3,
"two" => 2,
"one" => 1
}
while bottlecount > 1
bottlecount_primerA = bottlecount.to_s
bottlecount_primerB = bottlecount_primerA[0].to_i*10
bottlecount_primerC = bottlecount_primerA[1].to_i
if bottlecount > 19 && bottlecount_primerC != 0
bottlecount_tens = letters_to_numbers.key(bottlecount_primerB)
bottlecount_singels = letters_to_numbers.key(bottlecount_primerC)
bottlecount_text = "#{bottlecount_tens}-#{bottlecount_singels}"
elsif bottlecount > 19 && bottlecount_primerC == 0
bottlecount_tens = letters_to_numbers.key(bottlecount_primerB)
bottlecount_text = "#{bottlecount_tens}"
elsif bottlecount > 9 && bottlecount < 20
bottlecount_text = letters_to_numbers.key(bottlecount)
end
puts "#{bottlecount_text} bottles of beer on the wall,"
puts "#{bottlecount_text} bottles of beer,"
puts "Take one down, pass it around,"
bottlecount -= 1
end
puts "one bottle of beer on the wall,"
puts "one bottle of beer,"
puts "Take one down, pass it around,"
puts "zero bottles of beer on the wall"
end
Bottleman = BeerSong.new (99)
Bottleman.print_song
meinen Kopf für eine Weile Kratzen, aber nicht sicher, warum die Klasse nicht gehen will.
In Rubin ist "Klasse" niedriger verkleidet. Sie werden auch Ihre Variable 'Botteman' klein schreiben wollen. Es ist der Gemeinschaftsstandard in Ruby, anstelle von Tabs 2 Leerzeichen für den Einzug zu verwenden. Sie müssen auch nicht 'Hash.new' verwenden, nur um den leeren Hash durch Ihren erzeugten Hash zu ersetzen (' letters_to_numbers = {...} 'erstellt einen anderen Hash für Sie). –