gpt4 book ai didi

Ruby 的 string.downcase!行为

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

我是 ruby​​ 的新手,正在做一些基本的字符串操作来掌握它,我注意到 foo = 'foo'.downcase! 与分配一个值后的小写不同foo 像这样:

foo = 'foo'.downcase!
if foo.include? 'foo'
print 'bar'
end

这将导致 NoMethodError: undefined method `include?'对于 nil:NilClass (NoMethodError)

在赋值后对 foo 进行小写时不会:

foo = 'foo'
foo.downcase!
if foo.include? 'foo'
print 'bar'
end

如果这是一个微不足道的问题,我很抱歉,但几分钟的谷歌搜索没有返回任何有成果的东西。

最佳答案

这是因为String#downcase!是一种破坏性方法(因此是!),这意味着它对适当的对象进行操作。因为它改变了对象本身,所以不需要它的返回值。 Ruby 设计者认为返回值的一个很好的用途是指示是否进行了任何更改。

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

你的字符串已经是小写的,所以 downcase! 返回 nil 然后你用它替换变量。

关于Ruby 的 string.downcase!行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146621/

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