有人能詳細解釋一下這個對象的方法(我的意思是用於語法:?空的,空!和自我?!):Ruby對象空白?方法
def blank?
respond_to?(:empty?) ? !!empty? : !self
end
也許建議好書的話題閱讀。
有人能詳細解釋一下這個對象的方法(我的意思是用於語法:?空的,空!和自我?!):Ruby對象空白?方法
def blank?
respond_to?(:empty?) ? !!empty? : !self
end
也許建議好書的話題閱讀。
如果
self
已得到方法empty?
然後返回double not empty?
否則返回single not self
。
not
(!
)是紅寶石的慣用方式的任何對象轉換成布爾
single not
(!
)返回false
用於任何falsey
對象的任何truthy
和true
。
double not
(!!
)返回true
任何truthy
和false
任何falsey
對象。
Ruby中的Falsey對象是nil
和false
,其他任何對象都是真的。
所以。本質上respond_to?(:empty?) ? !!empty? : !self
檢查當前對象是否定義了方法empty?
,如果此方法在錯誤響應的情況下返回真或假,則返回true。如果沒有定義empty?
,如果self不是false
或nil
(任何僞造的對象),它將始終返回false。
謝謝你的好解釋! – Andrew
如果有東西是空的,那麼它是空白的。如果它不是空的,那麼它不是空白的。如果它不知道自己是否爲空,則認爲它不是空白。
我的意思是在這裏使用的語法:空? ,!!空了?和自我
:empty?
:這是一個Symbol
字面!!empty?
:這個由兩個部分組成:
empty?
:一個receiverless argumentless消息發送!
語法糖發送消息!
,即!foo
相當於foo.!
self
:字面特殊變量self
高清空白? respond_to?(:空?)? !!空? :自 結束
定義空白提出疑問 (無意義縮進)的respond_to功能屬性爲空的問題吧,是不是不爲空的問題是,模塊內的自我檢查。 結束
您可能想添加一些關於您在哪裏看到的內容? –
https://github.com/feedbin/refresher/blob/master/lib/core_ext/blank.rb#L12 – Andrew
「或者,也許建議好的書閱讀主題。」 - Ruby的語法例如在[ISO Ruby Language Specification]中描述(http://iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579)。符號文字在8.7.6.6節中描述,11.3.1中的方法調用,11.5.4.8.4中的self,11.2.3中的「!」。 –