新手到ruby,试图用ruby执行文件来玩ruby脚本。就像rails想要在ruby中存储一个对象,它应该显示给我。
ruby test.rb
puts "Welcome to BookDetails"
puts "1:Add"
puts "2:Delete"
puts "3:Update"
puts "4:View"
puts "5:Exist"
print "Enter your choice:"
grade = gets.chomp
emp = []
i= 0
case grade
when "1"
emp[i] = Hash.new
puts "Enter empname:"
emp[i][:empname] = STDIN.gets
puts "Enter emp email:"
emp[i][:empemail] = STDIN.gets
puts "Enter emp phno:"
emp[i][:empphno] = STDIN.gets
i= i +1
puts emp
when "2"
puts 'Enter the row to be deleted:'
$delete = STDIN.gets
when "3"
puts 'update the row:'
$update = STDIN.gets
when "4"
puts 'view:'
when "5"
puts 'exist:'
else
puts "You just making it up!"
end
现在当我运行ruby test.rb时,它会执行所有操作并从命令行获取数字,但最后它会显示而不显示添加的对象。只有在给出5时它才会退出。
直到用户选择5,它不应退出界面。用户可以选择#1并添加详细信息并选择#4查看添加的详细信息。
答案 0 :(得分:1)
有一些问题,
在您输入' 1'之后,没有接受额外输入的循环...该计划结束。
你可以做到
request_to_exit = false
until request_to_exit
case grade
---
when '5'
request_to_exit = true
else
...
end
end
另一个问题是当你做
时grade = gets.chomp
emp = []
接受grade
(要执行的操作)后,您正在消灭所有员工(设置为空数组)
emp = []
应该在until request_to_exit
开始之前。
这应该可以帮助您在项目中取得进步。
答案 1 :(得分:1)
Ruby有一个loop
方法"重复执行块" :
loop do
print "Enter your choice: "
case gets.to_i
when 1
# ...
when 2
# ...
when 3
# ...
when 4
# ...
when 5
break # <- 'break' exits the loop
end
end