有人可以详细解释一下这个对象方法吗(我指这里使用的语法: empty? , !!empty? 和!self):
def blank?
respond_to?(:empty?) ? !!empty? : !self
end
或者建议一本关于这个主题的好书。
def blank?
respond_to?(:empty?) ? !!empty? : !self
end
或者建议一本关于这个主题的好书。
self
有方法empty?
,则返回double not empty?
,否则返回single not self
。
not
(!
)是Ruby中将任何对象转换为布尔值的惯用方式。
single not
(!
)对于任何truthy
对象返回false
,对于任何falsey
对象返回true
。
double not
(!!
)对于任何truthy
对象返回true
,对于任何falsey
对象返回false
。nil
和false
是falsey对象,任何其他对象都是truthy。respond_to?(:empty?) ? !!empty? : !self
实际上检查当前对象是否定义了empty?
方法,并在该方法返回任何truthy响应时返回true,或在falsey响应的情况下返回false。如果未定义empty?
,则仅在self不是false
或nil
(任何falsey对象)时始终返回false。def blank? respond_to?(:empty?) ? !!empty? : !self end
定义 blank 判断函数,(无意义的缩进)使用 respond_to 方法判断属性 empty 是否存在,如果存在则返回它是否为空值,否则返回 self 是否为空值。该函数属于模块内的结尾。
self
在11.5.4.8.4中描述,!
在11.2.3中描述。 - Jörg W Mittag