Rubyを使用して、ユーザーからの入力を取得してファイルのリストの新しい名前を提供しています。名前を配列に格納していますが、格納する前に、ユーザーの入力が有効であることを確認するための一連の条件があります。全体的に、これはかなりうまく動作しますが、私はそれぞれ「中をループに確認するすべてが満たされるまで複数の条件でループする
puts "Rename file to:"
new_name = gets.chomp
new_name = check_input(new_name,@all_names)
@all_names << new_name
def check_input(new_name,all_names)
while new_name.match(/\s/)
puts "Names must not contain spaces:"
new_name = gets.chomp
end
while new_name.empty?
puts "Please enter a name:"
new_name = gets.chomp
end
while all_names.include? new_name
puts "That name already exists. Please enter a different name:"
new_name = gets.chomp
end
return new_name
end
:それは本質的に、この(私は質問に関係のないコードの一部を削除した)に帰着します条件は何度も繰り返され、すべての条件が満たされます。例えば、名前「ABC」が既に存在する場合、ユーザーがこの順に従います。
- が「ABC」=>入る「その名前がすでに存在している別の の名前を入力してください」
- は「ABCに入ります"=>『名前にはスペースを含めることはできません』
- 入る『最後のエントリが正常に動作しますが、それがためにチェックする条件をスキップなので、私は、それはしたくない=>
再びABCを』重複します。新しいエントリごとに、これらの条件を同時にループするより良い方法がありますか?
ありがとうございました!
美しく効率的です。どうもありがとうございます! – lumos