Ruby 1.9.3创建新用户/密码并在DB中重新提示?
我是一个初学者,正在上一些基础课 尝试创建一个新用户,如果该用户已经在哈希中,请再次提示该用户,但一旦该用户为零,请输入密码,然后添加到哈希中。我尝试过很多次。这只是其中之一Ruby 1.9.3创建新用户/密码并在DB中重新提示?,ruby,loops,Ruby,Loops,我是一个初学者,正在上一些基础课 尝试创建一个新用户,如果该用户已经在哈希中,请再次提示该用户,但一旦该用户为零,请输入密码,然后添加到哈希中。我尝试过很多次。这只是其中之一 users = { user_1: 2 } puts "Create New User: Type your username" new_user = gets.chomp if users[new_user.to_sym].nil? puts "Type in a Password" pass =
users = {
user_1: 2
}
puts "Create New User: Type your username"
new_user = gets.chomp
if users[new_user.to_sym].nil?
puts "Type in a Password"
pass = gets.chomp
users[new_user.to_sym] = pass.to_i
elsif users[new_user.to_sym] != nil
puts "We already have that user."
loop do
if users[new_user.to_sym] != nil
puts "Try Again"
ta = gets.chomp
break if users[ta.to_sym] == nil
end
end
end
我尝试过使用
“when,then”,“if/else”
,“until”
,“while”
,等等(这些是我知道的基本函数,或者至少是我正在学习的函数,如果可能的话,我想使用这些函数的一些变体来解决),但每次我似乎都不知道如何应用停止循环的用户名(最终为零),回到我的主要目标,向散列中添加一个新的用户/密码。我认为,您的主要难题是,在您设法从用户处获得有效名称后,如何返回到设置密码。您可以将此代码提取到一个方法中,然后调用它
users = {
"user_1" => 2
}
def get_username
puts "Create New User: Type your username"
new_user = gets.chomp
end
def get_password users, name
puts "Type in a Password"
pass = gets.chomp
users[name] = pass.to_i
end
new_user = get_username
if users[new_user].nil?
get_password users, new_user
else
puts "We already have that user."
# ruby's do-while loop. Or, rather, do-while-not in this case :)
begin
new_user = get_username
end unless users[new_user].nil?
get_password users, new_user
end
我还将代码更改为使用字符串作为键(而不是符号)。你应该避免使用那样的符号。它具有严重后果(符号不可垃圾回收,因此如果创建太多符号,可能会泄漏内存)。创建单个用户:
users = {
user_1: 2
}
check=true
puts "Create New User: Type your username"
new_user = gets.chomp
while(check) do
if users[new_user.to_sym] != nil
puts "We already have that user."
if users[new_user.to_sym] != nil
puts "Try Again"
puts "Enter username"
new_user = gets.chomp
end
elsif users[new_user.to_sym].nil?
puts "Type in a Password"
pass = gets.chomp
users[new_user.to_sym] = pass.to_i
break
end
end
您是否只需要创建一个用户?或者很多?我需要很多设施,虽然一次只需要一个。