String#blank?
非常に便利ですが、Ruby ではなく Rails に存在します。
置き換えるために、Rubyにそのようなものはありますか:
str.nil? || str.empty?
String#blank?
非常に便利ですが、Ruby ではなく Rails に存在します。
置き換えるために、Rubyにそのようなものはありますか:
str.nil? || str.empty?
私の知る限り、普通のRubyにはこのようなものはありません。次のように独自に作成できます。
class NilClass
def blank?
true
end
end
class String
def blank?
self.strip.empty?
end
end
これは機能しnil.blank?
、a_string.blank?
true/false および一般的なオブジェクトに対してこれを拡張できます (レールのように):
class FalseClass
def blank?
true
end
end
class TrueClass
def blank?
false
end
end
class Object
def blank?
respond_to?(:empty?) ? empty? : !self
end
end
参考文献:
https://github.com/rails/rails/blob/2a371368c91789a4d689d 6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L57 https://github.com/rails/rails/blob/2a371368c91789a4d689d6a84eb20b20b238ac アクティブ ライブラリ/active_support/core_ext/object/blank.rb#L67 https://github.com/rails/rails/blob/2a371368c91789a4d689d 6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L14 https://github.com /rails/rails/blob/2a371368c91789a4d689d6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L47
そして、String.blank?
これは前のものよりも効率的なはずの実装です:
Railsとまったく同じことがいつでもできます。のソースをblank
見ると、次のメソッドが に追加されていることがわかりますObject
。
# File activesupport/lib/active_support/core_ext/object/blank.rb, line 14
def blank?
respond_to?(:empty?) ? empty? : !self
end
String#blank?
Ruby にはそのような機能はありませんが、 on ruby-coreの活発な提案があります。
それまでの間、次の実装を使用できます。
class String
def blank?
!include?(/[^[:space:]]/)
end
end
この実装は、非常に長い文字列の場合でも非常に効率的です。
これを探している新しい人は、simple_ext gem を使用できます。この gem は、Rails の Array、String、Hash などのオブジェクトですべての Ruby コア拡張機能を使用するのに役立ちます。
require 'simple_ext'
str.blank?
arr.blank?
... etc.