首页 > 解决方案 > include 适用于 if 但不适用于 else

问题描述

我在做一个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

关于我需要改变什么的任何想法?

标签: rubyif-statement

解决方案


您需要小心以感叹号 ( ) 结尾的内置 ruby​​ 方法!nil如果没有进行任何更改,它们中的许多将返回:

'test'.downcase! # => nil
'Test'.downcase! # => "test"

由于您将结果分配给变量,因此无需使用感叹号方法,因为那些就地修改,您可以使用普通downcase方法。

'test'.downcase # => "test"

你后来也有一个elsif没有条件的,那可能只是一个else. 它实际上是在执行条件的“主体”的第一行elsif

if false
  puts "a"
elsif
  puts "b" # recall that `puts` returns `nil`
  puts "c"
else
  puts "d"
end

这导致

b
d

正在输出


推荐阅读