私は質問見つかった - 1が== nil
良いかnil
のですか?
私はいつもこれらの2つのことが同じだと思っていました。違いはありますか?
2
A
答えて
1
2つの操作は非常に異なりますが、常に同じ結果が得られることは間違いありません。 (1つはNilClassオブジェクトの#nil?
メソッドを呼び出し、1つはnil
シングルトンと比較します)
疑問がある場合は、実際には3番目の方法を試して、式の真理値をテストすることをお勧めします。
ので、if x
なくif x == nil
またはif x.nil?
は、このテストDTRTを持っているために、式の値は偽あるとき。
2
1つの違いがあります:クラスはnilを定義できますか?真:
class X
def nil?()
true
end
end
puts X.new.nil? #-> true
または実用的な例(私はあなたがそれを必要とする場合、私はnil_or_emptyを定義し、それをお勧めしません?):
class String
def nil?()
return empty?
end
end
puts 'aa'.nil? #-> false
puts ''.nil? #-> true
はベンチマークnilを実行していますか?少し速いようです。
require 'benchmark'
TEST_LOOPS = 100_000_000
C_A = nil
C_B = 'aa'
Benchmark.bmbm(10) {|b|
b.report('nil?') {
TEST_LOOPS.times {
x = C_A.nil?
x = C_B.nil?
} #Testloops
}
b.report('==nil') {
TEST_LOOPS.times {
x = (C_A == nil)
x = (C_B == nil)
} #Testloops
} #b.report
} #Benchmark
結果:
Rehearsal ---------------------------------------------
nil? 27.454000 0.000000 27.454000 (27.531250)
==nil 31.000000 0.000000 31.000000 (31.078125)
----------------------------------- total: 58.454000sec
user system total real
nil? 27.515000 0.000000 27.515000 (27.546875)
==nil 31.125000 0.000000 31.125000 (31.171875)
関連する問題
- 1. HTTParty 'get'はnilを返します:Ruby
- 2. Rubyのインスタンス変数nil
- 3. Rubyでは、なぜ!nil return => true?
- 4. LISPのnilと(nil)の差
- 5. nil ||偽と偽||ルビーのnil
- 6. nilとreleaseの問題?
- 7. のUIWebView request.response = nilの問題
- 8. Ruby on Rails RooインポートExcelリターンNIL
- 9. Ruby on Rails:セッションオブジェクトNilを返す
- 10. .nil?、.blank?と空?
- 11. なぜオプション(nil)はありませんが、nilだけはありますか?
- 12. UIImageWriteToSavedPhotosAlbum(imageView.image、nil、nil、nil);を使用中にメモリリークが発生する
- 13. LISP -</strong>私はNILS <strong>(NIL NIL NIL NIL)のリストを持っているリストに
- 14. Lisp: 'nilとnilの間に違いはありますか?
- 15. imageWithContentsOfFile return nilそしてimageWithDataはnilを返します。
- 16. golang(* interface {})(nil)がnilかどうか
- 17. NSInteger!= nil
- 18. MakeViewWithIdentifier:owner:returns nil
- 19. インターフェース - NIL
- 20. SKPaymentTransaction.originalTransaction.transactionReceiptはnilです
- 21. デビットafter_confirmation_path_forとnilリダイレクションエラー
- 22. nanocまたはruby link_to質問
- 23. 安全ナビゲーションオペレータ(&。)for nil
- 24. Objective-Cスタイルの質問:deallocの "release"または "nil"プロパティを実行しますか?
- 25. 弱い性質がのdeallocにnilに設定されますが、プロパティのIVARがnil
- 26. Railsのはnilオブジェクトエラー
- 27. UILabelはnilです
- 28. Lisp再帰はNIL
- 29. NSEntityDescriptionはnilです
- 30. Ruby on Rails - nilのための未定義メソッド `errors ':NilClass
は、それはおそらく再実装 'nilに本当に悪いアイデアだ'それはカオスのすべての種類の原因となりますので、?。 – tadman
'=='(および関連するメソッド)を再実装して、 'X.new == nil'がtrueを返すようにすることができます。 –
あなたは正しいです - ルビーはいつも予想どおりより柔軟です;) – knut