有人可以详细解释这个Object方法(我的意思是这里使用的语法:空?,!!空?和!self):
def blank? respond_to?(:empty?) ? !!empty? : !self end
或者也许建议好书来阅读主题.
如果
self
有方法empty?
则返回double not empty?
否则返回single not self
.
not
(!
)是Ruby中用于将任何对象转换为布尔值的惯用方法
single not
(!
)返回false
用于任何truthy
和true
任何falsey
对象.
double not
(!!
)返回true
用于任何truthy
和false
任何falsey
对象.
Ruby中的虚假对象是,nil
而且false
任何其他对象都是真实的.
所以.基本上respond_to?(:empty?) ? !!empty? : !self
检查当前对象是否已定义方法empty?
,如果此方法返回任何真实或假的错误响应,则返回true.如果empty?
未定义,则如果self不是false
或nil
(任何falsey对象),它将始终返回false .