0

これが私のコードです:

print "What's your first name"
first_name = "p".gets.chomp.capitalize!
puts "#{first_name}"
puts "Your name is #{first_name}!"
print "What's your last name?"
last_name = "m".gets.chomp.capitalize!
puts "#{last_name}"
puts "Your name is #{last_name}!"
print "What city do you live in?"
city = "world".gets.chomp.capitalize!
puts "#{city}"
puts "You live in #{city}!"
print "What state do you live in?"
state = "OR".gets.chomp.upcase!
puts "#{state}"
puts "You live in the state of #{state}!"

ただし、このエラーが発生し続けます:

private method `gets' called for "p":String

私は何を間違っていますか?

4

1 に答える 1

4

とインクルード にgetsメソッドがKernelありObjectますKernel。つまり、ほとんどすべてにメソッドが含まれKernelているため、ほとんどすべてにgetsメソッドがあります。の多くの (プライベート) メソッドの目的は、Kernel一部のメソッド ( などgets) を単純な関数として扱えるようにすることで、次のようなことが言えます。

s = gets

標準入力から読み取る。

これを行う場合:

"parker".gets.chomp.capitalize!

agetsからプライベートを呼び出していますが、明示的なレシーバーを使用してプライベート メソッドを呼び出すのは aです。KernelStringNoMethodError

標準入力から名を読みたい場合は、次のようにします。

first_name = gets.chomp.capitalize

gets他の呼び出しについても同様です。

于 2013-10-31T05:23:11.520 に答える