Som*_*ory 36 ruby object ruby-on-rails-3
可能重复:Ruby on Rails中nil v.vull v.blank
的简明解释
谁能告诉我.nil?,.blank?,.empty之间的区别?在红宝石?
任何答案都将受到高度赞赏.
mik*_*kej 65
在Ruby中,nil
在一个对象(类的单个实例NilClass
)中,可以在其上调用方法.nil?
在Ruby的标准方法,可以在调用的所有对象,并返回true
的nil
对象,并false
为别的.
empty?
是一些标准的Ruby方法,用于某些对象,如数组,哈希和字符串.它的确切行为将取决于特定对象,但通常true
在对象不包含元素时返回.
blank?
是不是一个标准的Ruby方法,但是被添加到所有由Rails的对象,并返回true
对nil
,false
空或空格的字符串.
因为empty?
没有为所有对象定义,所以NoMethodError
如果你打电话empty?
,你会得到一个nil
,以避免必须写像if x.nil? || x.empty?
Rails添加blank?
方法的东西.
在回答之后,我发现之前已经问过这个问题,所以你也应该检查这个问题的答案.
fl0*_*00r 26
感觉它;)
零?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
Run Code Online (Sandbox Code Playgroud)
空的?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
Run Code Online (Sandbox Code Playgroud)
空白?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
Run Code Online (Sandbox Code Playgroud)
Rib*_*oks 11
任何ruby变量都是一个对象,因此它可以被单元化/取消设置(设置为nil).nil?
如果未初始化,则返回true
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
Run Code Online (Sandbox Code Playgroud)
ruby中的数组,字符串和流可以不包含任何数据,因此它们可以为空.empty?
如果是这样,该方法返回true
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
Run Code Online (Sandbox Code Playgroud)
blank?
是ActiveSupport特定方法(在任何对象中都可用),并且在带有ActiveSupport的RubyOnRails中可用.如果object为nil或为空,则返回true.