我做了一个Ruby botcamp.我应该编写用'th'代替's'的所有用户输入的代码,这样就像Daffy Duck所说的那样.如果我输入s,它将被替换为th.这样可行!但是,如果我不输入's',它应该打印出来,我的elsif状态中没有包含任何内容.相反,我得到错误'未定义的方法`包含?' 为零:NilClass'.除了那个错误,解释器告诉我代码是好的.
print "Input a string: "
user_input=gets.chomp.downcase!
if user_input.include?"s"
user_input.gsub!(/s/, "th")
puts "Your string is #{user_input}!"
elsif
puts "There are no s's in your string!"
end
Run Code Online (Sandbox Code Playgroud)
关于我需要改变什么的想法?
您需要注意以感叹号(!)结尾的内置ruby方法.nil如果没有做出任何改变,他们中的很多人将会回来:
'test'.downcase! # => nil
'Test'.downcase! # => "test"
Run Code Online (Sandbox Code Playgroud)
由于您要将结果赋值给变量,因此不需要使用感叹号方法,因为那些就地修改,您可以使用常规downcase方法.
'test'.downcase # => "test"
Run Code Online (Sandbox Code Playgroud)
你后来也有一个elsif没有条件,应该只是一个else.它实际上是执行elsif条件的"主体"的第一行:
if false
puts "a"
elsif
puts "b" # recall that `puts` returns `nil`
puts "c"
else
puts "d"
end
Run Code Online (Sandbox Code Playgroud)
这导致了
b
d
正在输出
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |