2015-12-19 82 views
3

有人能詳細解釋一下這個對象的方法(我的意思是用於語法:?空的,空!和自我?!):Ruby對象空白?方法

def blank? 
    respond_to?(:empty?) ? !!empty? : !self 
end 

也許建議好書的話題閱讀。

+1

您可能想添加一些關於您在哪裏看到的內容? –

+0

https://github.com/feedbin/refresher/blob/master/lib/core_ext/blank.rb#L12 – Andrew

+1

「或者,也許建議好的書閱讀主題。」 - 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中的「!」。 –

回答

5

如果self已得到方法empty?然後返回double not empty?否則返回single not self

not!)是紅寶石的慣用方式的任何對象轉換成布爾

single not!)返回false用於任何falsey對象的任何truthytrue

double not!!)返回true任何truthyfalse任何falsey對象。

Ruby中的Falsey對象是nilfalse,其他任何對象都是真的。

所以。本質上respond_to?(:empty?) ? !!empty? : !self檢查當前對象是否定義了方法empty?,如果此方法在錯誤響應的情況下返回真或假,則返回true。如果沒有定義empty?,如果self不是falsenil(任何僞造的對象),它將始終返回false。

+0

謝謝你的好解釋! – Andrew

-1

如果有東西是空的,那麼它是空白的。如果它不是空的,那麼它不是空白的。如果它不知道自己是否爲空,則認爲它不是空白。

1

我的意思是在這裏使用的語法:空? ,!!空了?和自我

  • :empty?:這是一個Symbol字面
  • !!empty?:這個由兩個部分組成:

    • empty?:一個receiverless argumentless消息發送
    • !語法糖發送消息!,即!foo相當於foo.!
  • self:字面特殊變量self

-2

高清空白? respond_to?(:空?)? !!空? :自 結束

定義空白提出疑問 (無意義縮進)的respond_to功能屬性爲空的問題吧,是不是不爲空的問題是,模塊內的自我檢查。 結束