EDIT:誰かが私はので、私は質問を編集しています正しくbreak
に必要なことを指摘し
シナリオ:
次のコードを参照してください。
Ruby - IFブロック内で何かを実行してからブレークする方法は?
print "UserID: "
uid = $stdin.gets.chomp
print "Password: "
pwd = $stdin.gets.chomp
usr_inp = "#{uid};#{pwd}"
login_status = -1
# login_info.txt - "#{userid};#{password}" - format
File.open(File.join(File.dirname(__FILE__), 'login_info.txt'), "r") do |f|
f.each_line do |line|
puts line
if (line.chomp == usr_inp)
login_status = 1
elsif (line.chomp != usr_inp && line.include?(uid)) #case a person inputs invalid password
login_status = 0
elsif (line.chomp != usr_inp && !(line.include?(uid))) #case a person inputs an invalid id
login_status = 2
end
end
end
if (login_status == 1)
puts "\nLogged in successfully: #{uid}"
elsif (login_status == 2)
puts "\nSorry, that Employee does not exist."
elsif (login_status == 0)
puts "\nLogin failed.\nPlease check credentials."
end
問題:
break if (condition)
Rubyに存在します。しかし、私はそれをwahtしないでください。たぶん私は、コードがどのように動作するかルビー理解していないのです
if (condition x)
(do something)
break
elsif (condition y)
(do something else)
break
else
(whatever)
end
:
は、私のような何かをしたいです。 break
を使用したいときはいつでも、それは次のelsif
に関連付けられます。
助けてください。
正しいユーザーIDとパスワードが見つかった場合は、ループから抜け出す必要があります。そうでない場合は、次の行がチェックされ、間違っています。 –
@JonnyHenly:はい、この問題があります。私はルビーを壊すことはできません。 "break if(condition)"がありますが、 "login_status = 1"のようなブロックレベルの文を実行することはできません。どのように同時に何かを壊して実行するか? – Spandan
それだけで 'break'を使うことはできませんか? http://stackoverflow.com/questions/8502397/ruby-syntax-break-out-from-each-do-block –