ルビーでは、nilと定義されていないものに大きな違いがあります。 IRBから、次のことを考慮すると:
ruby-1.9.2-p0 :002 > active_record
NameError: undefined local variable or method `active_record' for main:Object
from (irb):2
from /Users/jed/.rvm/rubies/ruby-1.9.2-p0/bin/irb:16:in `<main>'
ruby-1.9.2-p0 :003 > active_record = nil
=> nil
ruby-1.9.2-p0 :004 > active_record.class
=> NilClass
ruby-1.9.2-p0 :006 > active_record.nil?
=> true
ので、nilであるオブジェクトはNilClassのインスタンスされているため、メッセージnil?
に応答trueを返しますが、(あなたのコードのように)変数を宣言せずになるRubyのdoesnのは、あなたが何を呼んでいるのか分からない。
ここではオプションのカップル:
or
キーワードはあまり厳密であるのに対し、Rubyの||
オペレータは、厳格な作業なので、VBの操作は、これら2つのまたはフローのオプションとの比較どこ私は知りません。
あなたはcallled小ぎれいな宝石を使用することができます「andand」
require 'andand'
active_record.andand.errors.count == 0
しかし、あなたがレールにこのような状況に対処する際に、一般的に、あなたが考える、上記の状況を判断するために、別の手段を使用します。
@post = Post.new(:my_key => "my value") #=> an ActiveRecord object
if @post.valid?
# do something meaningful
else
puts @post.errors.full_messages.to_sentence
end
、あなたはそれ未定義である可能性が高い場合に基づいて、何かを割り当てることを意味する場合は、メモ化を使用するとよいでしょう:
@post ||= Post.new
未定義の場合はオブジェクトを宣言するか、既存のオブジェクトを使用します
実際のライブラリ、またはactive_recordオブジェクトのコードでは 'active_record'ですか?この例では –
です。active_recordは、何も指定できないオブジェクトです。 – Sebtm
あなたのフレーズを撫でた理由はわかりません。最後の1つについては、VB.NETでは2番目の式が最初にfalseになった場合にのみ評価されます。 [これは短絡操作です](http://en.wikipedia.org/wiki/Short-circuit_evaluation)、Ruby '&&'& '||'でも同じことが起こります。 –