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. |
return "" if items.empty? |
||
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 |
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 |