Erstellen Sie die now_serving-Methode, die die nächste Person in Zeile aufrufen (d. H. Puts) und dann von vorne entfernen soll. Wenn niemand in der Schlange steht, sollte er sagen: "Es wartet niemand darauf, bedient zu werden!". Wenn ich versuche, die Shift-Methode zu verwenden, um das erste Element im Array loszuwerden. Ich habe am falschen Ausgang. Hier ist der Ruby-Code:FIFO-Ruby-Warteschlangenalgorithmus funktioniert nicht
def now_serving(array)
while array.length != 0
array.each do |name|
puts "Currently serving #{name}."
array.shift
end
end
puts "There is nobody waiting to be served!"
end
Aber die Array.shift funktioniert nur einmal, wie bekomme ich es das erste Element eines Arrays kontinuierlich sinken. Hier ist der Code für die Rspec:
describe "#now_serving" do
context "there are no people in line" do
it "should say that the line is empty" do
expect($stdout).to receive(:puts).with("There is nobody waiting to be served!")
now_serving(katz_deli)
end
end
context "there are people in line" do
it "should serve the first person in line and remove them from the queue" do
expect($stdout).to receive(:puts).with("Currently serving Logan.")
now_serving(other_deli)
expect(other_deli).to eq(%w(Avi Spencer))
end
end
end
end
ich die folgende Störung erhalte, wenn ich den Code ausführen. '' 'Failure/Fehler: now_serving (other_deli) #> erhalten: setzt mit unerwarteten Argumente erwartet: bekam: - @chumakoff –
Was sind ("Derzeit Logan dienen.") ("Zur Zeit Avi dienen.") 'katz_deli' und' other_deli'? Woher kommen diese? – chumakoff
Dies sind einige Tests von Rspec. @chumakoff –