2012-06-14 11 views

答えて

52

Rubyではオブジェクト(クラスNilClassの1つのインスタンス)内にnilというメソッドがあるので、そのメソッドを呼び出すことができます。 nil?は、すべてオブジェクトで呼び出すことができるRubyの標準メソッドであり、nilオブジェクトの場合はtrue、それ以外の場合はfalseを返します。

empty?は、の一部のオブジェクト(配列、ハッシュ、ストリングなど)の標準的なRubyメソッドです。その正確な動作は特定のオブジェクトに依存しますが、オブジェクトに要素が含まれていない場合は通常trueを返します。

blank?は、標準的なRubyの方法ではなく、全てレール戻るnilためtrueによってオブジェクト、false、空、または空白文字列に追加されます。

empty?は、すべてのオブジェクトのために定義されていないので、あなたがそうif x.nil? || x.empty? Railsのようなものを書くことを避けるためにnilempty?を呼び出した場合、あなたはNoMethodErrorになるだろうblank?メソッドを追加します。答えの後


、私はthis question has been asked beforeはそうあなたもその質問への回答を確認する必要があることを発見しました。

22

フィール;

NIL?

nil.nil? 
#=> true 
[].nil? 
#=> false 
"".nil? 
#=> false 
" ".nil? 
#=> false 

EMPTY?

[].empty? 
#=> true 
nil.empty? 
#=> undefined method 
"".empty? 
#=> true 
" ".empty? 
#=> false 

BLANK?

[].blank? 
#=> true 
nil.blank? 
#=> true 
"".blank? 
#=> true 
" ".blank? 
#=> true 
10

ルビ変数はすべてオブジェクトであるため、単位化/設定解除(nilに設定)することができます。それは

b = nil 
b.nil? # true 
b = 'string value' 
b.nil? # false 

アレイ、文字列を初期化されていない場合nil?メソッドがtrueを返し、ルビーにデータを含まないことができますので、彼らは空にすることができますストリーム。そう

array = [] 
array.empty? # true 
array << 5 << 4 # [5, 4] 
array.empty? # false 

string = "" # empty line 
string.empty? # true 

blank?場合empty?方法はtrueを返し(任意のオブジェクトで利用可能)activesupportの具体的な方法であり、activesupportのとRubyOnRailsで入手可能です。 objectがnilまたは空の場合はtrueを返します。

+2

'空白?'ActiveSupportメソッドの場合 – fl00r

+0

@ fl00rはい、そうです。私は答えを編集します – Ribtoks

関連する問題