为什么这不是真的?

时间:2016-08-26 02:23:31

标签: ruby

prop被分配了一个值。然后,应该在此实例上调用test_it? truthy。相反,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?

2 个答案:

答案 0 :(得分:6)

if puts a.test_it?

此处,您没有使用a.test_it?,而是puts的返回值作为条件,即nil

答案 1 :(得分:2)

如果您希望if语句评估为true,则需要执行

if a.test_it?
  # code to execute unless statement is false or nil
end

如果if不为false或为零,则@prop语句将评估为true。因此,如果将@prop指定为test,则if语句为true,并评估if内的代码。