nil? empty? blank?的区别
1nil?:
check if it exists and that it is valid.In ruby,all classes inherit from the Object class.nil? is a method of Object.
跟其他语言不同的是,其他语言会把nil当成是null,但是nil在ruby中指向的是一个class NilClass。所以nil.nil?=true
cool_people = {:conan_the_destroyer => "man", :red_sonja => "woman"}
cool_people[:george_bush_II]
=> nil
cool_people[:george_bush_II].class
=> NilClass
cool_people[:george_bush_II].nil?
=> true
cool_people[:conan_the_destroyer].nil?
=> false
test_var = nil
test_var.nil?
=> true
[].nil?
=> false
"".nil?
=> false
0.nil?
=> false
false.nil?
=> false
2empty?
empty只用在一些Ruby Objects.String,Hash,Array。来判定当前的对象是否为空
["Larry", "Curly", "Moe"].empty?
=> false
[""].empty?
=> false
[].empty?
=> true
{}.empty?
=> true
"".empty?
=> true
0.empty?
=> NoMethodError: undefined method `empty?' for 0:Fixnum
test_var2 = nil
test_var2.empty?
= > NoMethodError: undefined method `empty?' for nil:NilClass
3 blank?
An object is blank if it‘s false, empty, or a whitespace string.
是nil和empty的集合。
dog = {:name => "Beauregard"}
puts "What kind?" if dog[:breed].blank?
=> What kind?
dog = {:name => "Beauregard", :breed => ""}
puts "What kind?" if dog[:breed].blank?
=> What kind?