私はファイルチェックとソートスクリプトを持っています。今では、ユーザーが最終出力をソートする方法を選択することを希望しました。悲しいことに、Rubyはgetsコマンドを無視しているようだ。私がセクション全体をコメントアウトすると、スクリプトは正常終了します。 def readoutを無視してください。私は決してそれを終えたことはありません....Ruby:取得値をスキップします
私の質問は次のとおりです。なぜRubyはgetsコマンドをスキップしますか?
class Product
attr_reader :id, :name, :price, :stock
def initialize(id,name,price,stock)
@id = id
@name=name
@price=price
@stock=stock
end
def readout
self.each do |product|
print product.id
print "|"
print product.name
print "|"
print product.price
print "|"
print product.stock
puts ""
end
end
end
products = []
newproducts= []
if ARGV[0] != nil
if File.exist?(ARGV[0])
File.open(ARGV[0] , "r") do |f|
f.each_line do |line|
products << line
end
end
products.each do |product|
data = product.split(",")
newproducts.push(Product.new(data[0].strip, data[1].strip, data[2].strip.to_i, data[3].strip.to_i))
end
puts "What to sort by?"
question = gets.strip
if question == "name"
newproducts.sort! {|a,b| b.name <=> a.name}
elsif question == "price"
newproducts.sort! {|a,b| b.price <=> a.price}
elsif question =="id"
newproducts.sort! {|a,b| b.id <=> a.id}
elsif question == "stock"
newproducts.sort! {|a,b| b.stock <=> a.stock}
else
puts "Wrong Answer."
end
#End of File Check
else
puts "File #{ARGV[0]} does not exist."
end
if ARGV[1] != nil
File.open(ARGV[1], "w") do |f|
newproducts.each do |product|
puts "Added #{product.name} to the file."
data = {product.id, product.name, product.price, product.stock}
f.puts(data)
end
end
#End of ARGV check.
else
puts "No output file assigned."
end
#End of master ARGV check.
else
puts "No command given."
end
将来的には、通常、作業していないコードを可能な限り短いものに減らすことをお勧めしますが、実行すると元のエラーと同じエラーが表示されます。これは、誰かがタイムリーに間違いを発見できる(または喜んで)可能性を大幅に高めます。 – sepp2k
また、ある言語のコアルーチンが正常に動作していないと思われ、その言語がしばらくお待ちいただいている場合、問題はコアルーチンにはないということはあなたのコードにあります。その時点では、一歩前進し、コードを見ずにドキュメントを非常によく読んでから、30分後にもう一度コードを見てみるとよいでしょう。ときには問題があなたに飛び火することもあります。私は同僚にCの入力ルーチンのバグが見つかったと教えてもらう前に、それがコンパイラにあったことを誓い、確かに、それは彼らのコードでした。 :-) –
私はそれが私のコードにあると思った。私はまだどこでルビーを学ぶための良いガイドを見つけるか分からない。私は年齢のためにこのコードを検討していて、クラスメートにも尋ねました。なぜそれが応答していないのかについて、誰も答えを出すことはできませんでした。 NetBeans on OSXの可能性がある人もいます。 ありがとうございました。 @ sepp2k:どのくらいの量が削減されたのか分かりませんが、私のファイルチェックが何らかの形で妨害されているかどうかはわかりませんでした。 – Fallion