谁能告诉我nil?
,blank?
和empty?
Ruby 中的区别?
3 回答
在 Ruby 中,nil
在一个对象(类的单个实例NilClass
)中。这意味着可以在其上调用方法。nil?
是 Ruby 中的一个标准方法,可以在所有对象上调用,并true
为该nil
对象和false
其他任何东西返回。
empty?
是一些对象(如数组、哈希和字符串)的标准 Ruby 方法。它的确切行为将取决于特定的对象,但true
如果对象不包含任何元素,它通常会返回。
blank?
不是标准的 Ruby 方法,而是由 Rails添加到所有true
对象并返回、nil
、false
空或空白字符串。
因为empty?
不是为所有对象定义的,NoMethodError
如果你调用so 以避免必须编写诸如Rails 之类的东西添加方法empty?
,你会得到一个。nil
if x.nil? || x.empty?
blank?
回答后,我发现了一个较早的问题,“如何在 Rails(和 Ruby)中理解 nil vs. empty vs. blank ”,所以你也应该检查这个答案。
感受一下;)
零?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
空的?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
空白的?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
任何 Ruby 变量都是一个对象,因此它可以被未初始化/取消设置(设置为 nil)。nil?
如果方法未初始化,则返回 true:
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
Ruby 中的数组、字符串、流不能包含数据,因此它们可以为空。如果是,则该empty?
方法返回 true:
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
blank?
是 Active Support 特定的方法(在任何对象中可用),并且在具有 Active Support 的 Ruby On Rails 中可用。如果对象为 nil 或为空,则返回 true。