可能性のある複製:
nil v。empty v。blank in Ruby on Rails の簡潔な説明)==
.nil?、。blank?、。emptyの違いを教えてください。ルビー?
どんな答えでも大歓迎です。
Rubyでは、オブジェクト内のnil
(クラスNilClass
の単一インスタンス)で、メソッドを呼び出すことができます。 nil?
はRubyの標準メソッドであり、allオブジェクトで呼び出すことができ、true
オブジェクトにはnil
を返し、それ以外の場合はfalse
を返します。
empty?
は、配列、ハッシュ、文字列などのsomeオブジェクトの標準Rubyメソッドです。正確な動作は特定のオブジェクトに依存しますが、通常、オブジェクトに要素が含まれていない場合はtrue
を返します。
blank?
は標準のRubyメソッドではありませんが、[allオブジェクトにRailsによって追加され、true
、nil
、空、または空白文字列に対してfalse
を返します。
empty?
はすべてのオブジェクトに対して定義されていないため、NoMethodError
でempty?
を呼び出した場合はnil
を取得し、if x.nil? || x.empty?
Railsのようなものを記述する必要がないようにblank?
メソッドを追加します。
答えた後、 この質問は以前に尋ねられたことがあります であることがわかったので、その質問に対する答えも確認する必要があります。
それを感じる ;)
NIL?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
空の?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
ブランク?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
任意のRuby変数はオブジェクトであるため、ユニット化/設定解除できます(nilに設定)。nil?
メソッドは、初期化されていない場合にtrueを返します
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
Rubyの配列、文字列、ストリームにはデータを含めることができないため、空にすることができます。empty?
メソッドはtrueを返します
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
blank?
はActiveSupport固有のメソッド(任意のオブジェクトで利用可能)であり、ActiveSupportを備えたRubyOnRailsで利用可能です。オブジェクトがnilまたは空の場合、trueを返します。