Menu: Difference between revisions

Content added Content deleted
(Rewrite of OCaml solution to fully comply with task description; added example use.)
Line 1,612: Line 1,612:
=={{header|Ruby}}==
=={{header|Ruby}}==
<lang ruby>def select(prompt, items)
<lang ruby>def select(prompt, items)
return "" if items.length == 0
return "" if items.empty?
while true
loop do
items.each_index {|i| puts "#{i}. #{items[i]}"}
items.each_index {|i| puts "#{i}. #{items[i]}"}
print "#{prompt}: "
print "#{prompt}: "
begin
begin
answer = Integer(gets())
answer = Integer(gets)
rescue ArgumentError
rescue ArgumentError
redo
redo
end
end
return items[answer] if answer.between?(0, items.length - 1)
return items[answer] if (0...items.length).cover?(answer)
end
end
end
end
Line 1,628: Line 1,628:
response = select("Which is empty", [])
response = select("Which is empty", [])
puts "empty list returns: >#{response}<"
puts "empty list returns: >#{response}<"
puts ""
puts


# "real" test
# "real" test