.nil? .empty? .blank? .present? in Ruby on Rails

c3tc3tc3t發表於2016-06-06
 1 We get confused when there are many options to choose from. Same is the case when it comes to use any one from the above list. But one needs to be careful in using them and it is better that we understand it well before using it.
 2 
 3 Let's see which method does what.
 4 
 5 .nil?
 6 
 7 - It is Ruby method
 8 - It can be used on any object and is true if the object is nil.
 9 - "Only the object nil responds true to nil?" - RailsAPI
10 
11 nil.nil? = true
12 anthing_else.nil? = false
13 a = nil
14 a.nil? = true
15 “”.nil = false
16 
17 .empty?
18 
19 - It is Ruby method
20 - can be used on strings, arrays and hashes and returns true if:
21 String length == 0
22 Array length == 0
23 Hash length == 0
24 - Running .empty? on something that is nil will throw a NoMethodError
25 
26 "".empty = true
27 " ".empty? = false
28 
29 
30 .blank?
31 
32 - It is Rails method
33 - operate on any object as well as work like .empty? on strings, arrays and hashes.
34 
35 nil.blank? = true 
36 [].blank? = true 
37 {}.blank? = true 
38 "".blank? = true 
39 5.blank? == false
40 
41 - It also evaluates true on strings which are non-empty but contain only whitespace:
42 
43 "  ".blank? == true"  ".empty? == false
44 
45 Quick tip: !obj.blank? == obj.present?
46 
47 activesupport/lib/active_support/core_ext/object/blank.rb, line 17 # (Ruby 1.9) 
48 
49 def present? 
50  !blank?
51 end

 

相關文章