我想
arg.present?
为了检查一个字符串是空的还是零,是真理和光明,但是我注意到一个令人困惑的案例。如果我的字符串是:
arg = "\t"
我得到了错误的结果:
2.4.0 :003 > arg = "\t"
=> "\t"
2.4.0 :004 > arg.present?
=> false
检查我的字符串参数是空还是零是什么更简单的方法?当然,我可以写arg.empty? || arg.nil?
但我正在寻找一种更简洁的方式。
答案 0 :(得分:7)
所以#present?
与#blank?
相反,#blank?
定义为"如果对象为false,空或空格字符串,则该对象为空。&#34 ;
" \吨"是一个空白字符串(一个标签),因此它是#blank?
,而不是#present?
请注意" \ t"由于字符串的构造方式,它只被解释为制表符。
2.2.5 :001 > "\t".present?
=> false
2.2.5 :002 > '\t'.present?
=> true
答案 1 :(得分:-1)
我建议阅读并使用Active Support's Core documentation中的示例。
这可能有助于解释:
require 'active_support/core_ext/object/blank'
empty_str = ''
tab = "\t"
period = '.'
empty_str.empty? # => true
empty_str.present? # => false
empty_str.blank? # => true
一个空字符串是empty?
,它没有任何价值(或内容),所以没有任何东西可以present?
,而它是blank?
因为它&# 39; s empty?
。
tab.empty? # => false
tab.present? # => false
tab.blank? # => true
tab
不是empty?
因为它有内容,但它有空格,所以它不是present?
而是blank?
period.empty? # => false
period.present? # => true
period.blank? # => false
1}}。
period
empty?
不是blank?
或present?
,因为它不是空格,而是$().submit()
。