prop
に値が割り当てられます。そうすれば、この例ではtest_it?
への電話が真実になるはずです。代わりに、test_it?
はnilを返します。私は間違って何をしていますか?ここでなぜこの真実ではないのですか?
class ClassA
attr_accessor :prop
def test_it?
@prop
end
end
a = ClassA.new
a.prop = "test"
if puts a.test_it?
prop
に値が割り当てられます。そうすれば、この例ではtest_it?
への電話が真実になるはずです。代わりに、test_it?
はnilを返します。私は間違って何をしていますか?ここでなぜこの真実ではないのですか?
class ClassA
attr_accessor :prop
def test_it?
@prop
end
end
a = ClassA.new
a.prop = "test"
if puts a.test_it?
@prop
がfalseかnilでない場合はtrueに評価するif文をしたい場合、あなたは
if a.test_it?
# code to execute unless statement is false or nil
end
を行う必要がありif
文は真と評価されます。したがって、@prop
をtest
に割り当てると、ifステートメントは真となり、if
のコードが評価されます。
if puts a.test_it?
、あなたはnil
ある条件としてa.test_it?
が、puts
の戻り値を使用していません。
「Class.new」を使用していて、実際には「Class.new」ではなく、再現できません。あなたの見本はあなたが見ているものを生み出すのに十分であると確信していますか?もしそうなら、どのバージョンのRubyを使用していますか? – Ryan
編集されました。最後の行に 'if'を追加しました。それは本当に戻らなければならない?代わりに、私はゼロになる。 – 4thSpace
いいえ、 'true'を返してはいけません。このドキュメントではっきりと分かるように、['Kernel#puts'](http://ruby-doc.org/core/Kernel.html#method-puts)は、' 'false '*である' nil'を返します。 'else'ブランチが実行されます。これは存在しないため、' nil'と評価されます。 –