Rubynil?
のblank?
との違いを誰か教えてもらえますか?empty?
3 に答える
Ruby ではnil
、オブジェクト (クラスの単一のインスタンスNilClass
) で。これは、メソッドを呼び出すことができることを意味します。nil?
はRubyの標準メソッドで、すべてのtrue
オブジェクトで呼び出すことができ、そのnil
オブジェクトやその他のものに対して戻りfalse
ます。
empty?
配列、ハッシュ、文字列などのオブジェクトに対する標準の Ruby メソッドです。その正確な動作は特定のオブジェクトによって異なりますが、通常true
、オブジェクトに要素が含まれていない場合に戻ります。
blank?
標準の Ruby メソッドではありませんが、 Rails によってすべてのオブジェクトに追加され、 、 、空、または空白文字列をtrue
返しnil
ますfalse
。
empty?
はすべてのオブジェクトに対して定義されているわけではないため、 Rails がメソッドを追加するなどの記述を避けるために、呼び出したNoMethodError
場合に取得します。empty?
nil
if x.nil? || x.empty?
blank?
回答後、「 Rails (および Ruby) で nil vs. empty vs. blank を理解する方法」という以前の質問を見つけたので、その回答も確認してください。
それを感じる ;)
無?
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?
Active Support 固有のメソッド (任意のオブジェクトで使用可能) であり、Active Support を使用して Ruby On Rails で使用できます。オブジェクトが nil または空の場合は true を返します。