为什么Ruby告诉我在场?有价值的时候是假的吗?

Dav*_*ave 0 ruby string ruby-on-rails activesupport is-empty

我想

arg.present?
Run Code Online (Sandbox Code Playgroud)

是为了检查一个字符串是空的还是零的真相和光,但是我注意到一个令人困惑的情况.如果我的字符串是:

arg = "\t"
Run Code Online (Sandbox Code Playgroud)

我得到了错误的结果:

2.4.0 :003 > arg = "\t"
 => "\t"
2.4.0 :004 > arg.present?
 => false
Run Code Online (Sandbox Code Playgroud)

检查我的字符串参数是空还是零的更简单的方法是什么?当然,我可以写,arg.empty? || arg.nil?但我正在寻找一种更简洁的方式.

Dav*_*dge 8

所以#present?它与之相反#blank?,并被#blank?定义为"如果对象是空的,如果它是假的,空的,或者是空白字符串,那么它就是空白的."

"\ t"是一个空白字符串(一个标签),因此它是#blank?,而不是#present?

请注意,由于字符串的构造方式,"\ t"仅被解释为制表符.

2.2.5 :001 > "\t".present?
 => false 
2.2.5 :002 > '\t'.present?
 => true 
Run Code Online (Sandbox Code Playgroud)