gpt4 book ai didi

ruby-on-rails - Rails 对象#空白?与 String#empty 相比?困惑

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:38 25 4
gpt4 key购买 nike

Rails docsObject#blank?

的信息

An object is blank if it’s false, empty, or a whitespace string. For example, “”, “ “, nil, [], and {} are blank.

但是那个方法的源码是这样的:

# File activesupport/lib/active_support/core_ext/object/blank.rb, line 12
def blank?
respond_to?(:empty?) ? empty? : !self
end

现在,当我打开方便的小命令行并输入 ruby -e 'p "".empty?' 时,它会返回 false。这意味着 Rails 应该在它显然不是时说这是一个空白值。但!我打开我的 rails console 并键入 "".empty? 并像我之前的直接命令行一样得到 false。但是,我键入“”。空白?我会像 Rails 向我 promise 的那样成为现实。

在理解 Rails 的 blank? 方法如何与 String 的 empty? 方法一起工作时,我遗漏了什么?

最佳答案

Rails 在如何记录其 blank? 方法方面有点棘手。尽管 Object#blank? 声称还可以检测空白字符串,但它是通过 String#blank? 实现的,以处理空白大小写和 Object#blank? 捕捉一般情况。 (blank? 也在其他几个类上定义,以节省时间。)

activesupport/lib/active_support/core_ext/object/blank.rb, line 66 :

class String
def blank?
self !~ /\S/
end
end

关于ruby-on-rails - Rails 对象#空白?与 String#empty 相比?困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819899/

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