可能重复:
A concise explanation of nil v. empty v. blank in Ruby on Rails.nil?,.blank?之间的区别?和.empty?
谁能告诉我之间.nil?.blank?.empty区别?在红宝石?
任何答案将不胜感激。
可能重复:
A concise explanation of nil v. empty v. blank in Ruby on Rails.nil?,.blank?之间的区别?和.empty?
谁能告诉我之间.nil?.blank?.empty区别?在红宝石?
任何答案将不胜感激。
在Ruby中,nil
位于一个对象(类NilClass
的单个实例)中,因此可以对其调用方法。 nil?
是Ruby中的一种标准方法,可以在全部对象上调用,并返回true
为nil
对象,false
为其他任何内容。
empty?
是一个标准的Ruby方法一些对象像数组,哈希和字符串。它的确切行为将取决于特定的对象,但通常如果对象不包含元素,则返回true
。
blank?
不是标准的Ruby方法,但是被添加到所有对象通过导轨和用于nil
,false
,空,或一个空格的字符串返回true
。
因为empty?
没有被定义为所有对象你会得到一个NoMethodError
如果您在nil
叫empty?
所以要避免写东西像if x.nil? || x.empty?
Rails添加的blank?
方法。
回答后,我发现this question has been asked before所以你应该检查答案,这个问题了。
感觉它;)
无?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
EMPTY?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
BLANK?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
任何ruby变量都是一个对象,所以它可以被单元化/取消设置(设置为nil)。如果没有初始化
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
数组,字符串nil?
方法返回true,在红宝石流可以包含任何数据,因此它们可以是空的。该empty?
方法返回true若然
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
blank?
是的ActiveSupport具体方法(在任何对象可用的),并且与的ActiveSupport RubyOnRails可用。如果对象为零或空,它将返回true。
'空白?'如果ActiveSupport方法 – fl00r
@ fl00r是的,你是对的。我会编辑答案 – Ribtoks