WARNING: Ruby n00b question!
I’m trying to solve the below problem for a class I’m taking, but keep getting the following errors. Can someone tell me what I’m doing wrong?
Implement a new Die class which takes an array of strings as its input. When Die#roll is called, it randomly returns one of these strings. If Die.new is passed an empty array, raise an ArgumentError. It should work like this:
die = Die.new(['A', 'B', 'C', 'D', 'E', 'F'])
die.sides # still returns the number of sides, in this case 6
die.roll # returns one of ['A', 'B', 'C', 'D', 'E', 'F'], randomly
My code:
class Die
def initialize(labels)
if labels.empty?
raise ArgumentError.new("Your die must have 1 or more sides!")
else
@sides = labels.length
end
end
def sides
@sides
end
def roll
(1..@sides).each do |x|
return #What goes here? Need strings in the array to correspond to variable @sides...
end
end
end
Errors I’m getting:
[COLOR=“#FF0000”]
Error!
Die#roll returns a single letter if one label is passed in
expected: [“J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”, “J”] got: [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil] (compared using ==) Diff: @@ -1,101 +1,101 @@ -[“J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”, - “J”] +[nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil]
Error!
Die#roll returns every possible letter for a sufficiently large number of rolls
expected: [“C”, “E”, “G”, “H”, “K”, “M”, “N”, “O”, “P”, “Q”, “R”, “T”, “V”, “W”, “Z”] got: [nil] (compared using ==) Diff: @@ -1,2 +1,2 @@ -[“C”, “E”, “G”, “H”, “K”, “M”, “N”, “O”, “P”, “Q”, “R”, “T”, “V”, “W”, “Z”] +[nil]
[/COLOR]
Anybody know what I’m doing wrong? Would really appreciate some help from an expert.