gpt4 book ai didi

ruby - 使用 chomp 链接时出错

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:16 26 4
gpt4 key购买 nike

我写了一个小程序如下

print "Your string = "
input = gets.chomp.downcase!

if input.include? "s"
puts "Go yourself!"
end

但是我得到了错误

undefined method `include?' for nil:NilClass (NoMethodError)

如果我删除小写后的感叹号(!),程序可以正常运行。

我不明白原因。

最佳答案

String#downcase! 会给你 nil,如果字符串已经是小写的。所以使用String#downcase,是安全的。我敢肯定,您从命令行传递给方法 gets,这是一个已经小写的字符串。将行 input = gets.chomp.downcase! 替换为 input = gets.chomp.downcase。现在你安全了。

String#downcase

Returns a copy of str with all uppercase letters replaced with their lowercase counterparts. If the receiver string object is already, downcased, then the receiver will be returned.

String#downcase!

Downcases the contents of str, returning nil if no changes were made.

一个例子来证明这一点-

>> s = "abc"
>> p s.downcase
"abc"
>> p s.downcase!
nil

现在 nil 是类 NilClass 的一个实例,它没有名为 #include? 的实例方法。所以你得到了没有方法错误。这是显而易见的。

>> nil.respond_to?(:downcase)
false
>> nil.respond_to?(:downcase!)
false
>> s.respond_to?(:downcase!)
true
>> s.respond_to?(:downcase)
true

关于ruby - 使用 chomp 链接时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20799818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com