[ror]如何給字符串添加nil_or_empty? 方法

ror中判斷一個字符串是否null或者空字符串,目前沒有一個已知的方法,只能分別判斷

s = ''
puts "blank" if s.nil? || s.empty?

那麼如何自己添加這個方法呢? 對於熟悉ruby的同學,這個非常簡單,只需要打開類,添加方法,用之前引用一下就好了

class String 
   def nil_or_empty?
     return true if self.nil?
     return true if self.empty?
     false
  end
end

下面測試一下

irb(main):008:0> s='';s.nil_or_empty?
=> true
irb(main):009:0> s=nil;s.nil_or_empty?
Traceback (most recent call last):
        1: from (irb):9
NoMethodError (undefined method `nil_or_empty?' for nil:NilClass)
irb(main):010:0>

等等,好像哪裏不對!因爲ruby時動態語言,s賦值nil,那他暫時就是NilClass,所以,沒有nil_or_empty?方法! 還需要給NilClass添加nil_or_empty?

class NilClass
  def nil_or_empty?
     true
  end
end

由於NilClass只可能時nil,所以方法直接返回true,再次測試搞定!

irb(main):016:0> s=nil;s.nil_or_empty?
=> true
irb(main):017:0> s='nil';s.nil_or_empty?
=> false
irb(main):018:0> s='';s.nil_or_empty?
=> true

將兩個打開類保存到一個文件lib/nil_or_empty.rb, 然後再config/boot.rb中添加語句

load 'lib/nil_or_empty.rb'

好了,現在在我們的項目中,可以隨便在哪裏都能使用自己的方法nil_or_empty?了^_^

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章