ruby-1.9.3-p194 Rails 3.0.9Rails 3条件表达式retirns nil是否有问题?
我遇到了很多奇怪的条件表达式评估行为。
看一段代码:
module SimpleCaptcha
module ControllerHelpers
def simple_captcha_valid?
t = Logger.new(STDOUT)
return true if Rails.env.test?
if params[:captcha]
data = 'SHGHGD'
result = data == params[:captcha].delete(" ").upcase
t.debug data
t.debug params[:captcha].delete(" ").upcase
t.debug result
else
return false
end
end
end
end
这是我所看到的在调试控制台:
SHGHGD
WEWE
nil
正如你可以看到零是评估结果的结果=数据== PARAMS [: captcha] .delete(“”).upcase
但是为什么?
数据是'SHGHGD'
PARAMS [:验证码] .delete(”“).upcase是WEWE
为什么零?它一定是错误的。
如果您尝试't.debug result.to_s'确实有效吗? –
t.debug result.to_s按照我的预期返回false,但false是StringClass的实例,但不是FalseClass。 –
FalseClass.to_s应该返回StringClass“false”,NilClass.to_s应该返回一个空的StringClass“”。在这里试试你的场景,看看结果是否相同:http://tryruby.org –