ruby - 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
关于我需要改变什么的任何想法?
解决方案
您需要小心以感叹号 ( ) 结尾的内置 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
正在输出
推荐阅读
- grails - Grails 4 和 Jib - Grails 视图未包含在 Docker 映像中
- javascript - 使用 vue.js 在 tailwind ui navbar 组件中修复下拉自动打开
- mysql - 如何在mysql中选择与其他随机结果匹配的结果
- javascript - 推迟js的有效方法
- java - 获取用户对 HashMap 的输入作为键并在 Java 中打印其各自的值
- angular - 将视图路由器出口更改为侧栏
- html - 在纯 HTML 中隐藏和显示 div?
- python - TypeError: zip 参数 #1 必须支持 Python 中的迭代
- java - 对不同的数据结构使用相同的接口有什么好处?
- javascript - 即使硬编码,我的电子邮件也被强制从 .com.sg 更改为 .sg