簡體   English   中英

僅在block_given給出的情況下才給出方法block和yield?

[英]Only give method block and yield if block_given?

假設我有一個基本的td_tag幫助器,它在application_helper.rb中包裝了content_tag方法

def td_tag(*args)
  if block_given?
    content_tag(:td, *args) do
      yield
    end
  else
    content_tag(:td ,*args)
  end
end

使這段代碼更短的紅寶石方式是什么?

該示例以某種方式工作,但似乎沒有必要使用相同的參數(帶有或不帶有塊)來調用具有相同參數的相同函數嗎?

通過僅添加block_given? 到該塊內的yield行不起作用,因為從那時起,我已經給下一個函數一個塊了。

接受該塊作為參數,然后將其傳遞。 不需要使用block_given?

這在功能上與您的代碼相同:

def td_tag(*args, &block)
  content_tag(:td, *args, &block)
end

完全安全; 如果您不給該方法一個塊, block將為nilblock_given? content_tag將為false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM