Menu: Difference between revisions

→‎{{header|Ruby}}: Made more ruby like
(Pascal example corrected: return empty string if list empty)
(→‎{{header|Ruby}}: Made more ruby like)
Line 2,101:
 
=={{header|Ruby}}==
<lang ruby>def select(prompt, items)
def select(prompt, items = [])
return "" if items.empty?
loop do
''
items.each_index {|i| puts "#{i}. #{items[i]}"}
else
print "#{prompt}: "
beginanswer = -1
until (0...items.length).cover?(answer = Integer(gets)
items.each_indexeach_with_index {|i,j| puts "#{ij}. #{items[i]}"}
rescue ArgumentError
redoprint "#{prompt}: "
begin
answer = Integer(gets)
rescue ArgumentError
redo
end
end
return items[answer] if (0...items.length).cover?(answer)
end
end
 
# test empty list
response = select("'Which is empty", []')
puts "empty list returns: >#{response}<\n"
puts
 
# "real" test
items = ['fee fie', 'huff and puff', 'mirror mirror', 'tick tock']
response = select("'Which is from the three pigs"', items)
puts "you chose: >#{response}<"</lang>
</lang>
 
=={{header|Run BASIC}}==
Anonymous user