2016-09-19 75 views
0

我有一個看起來像這樣的方法:YARD關鍵字參數使用默認哈希

def get_endpoint(params: {}) 
end 

我想這個方法的調用者能在幾個可選的參數傳遞。

我想寫YARD文檔來支持這個,如果我沒有使用關鍵字參數,我會使用@option聲明。

然而,YARD自己的文檔說:

Note: For keyword parameters, use @param, not @option.

所以,我想:

# @param params [Hash] options to be used in request 
    # @param date [String] date in YYYYMMDD 
    # @param start_time [Integer] start_time in Epoch 

失敗,因爲YARD只看到我使用的是params關鍵字參數。準確的故障是:

​​

於是我試圖用@option語法與param關鍵字替換:

# @param params [Hash] options to be used in request 
    # @param params [String] :date in YYYYMMDD 
    # @param params [Integer] :start_time in Epoch 

導致不同的錯誤:

@param tag has duplicate parameter name: params 

理想我要描述此方法的用戶可以使用的3或4個選項的params散列。有沒有辦法做到這一點?

回答

3

該簽名不使用關鍵字參數:date:start_time。對於這些參數的關鍵字參數會被指定爲是這樣的:

def get_endpoint(date:, start_time:) 

@option特別是指用於指定將在你的情況params包含一個選項Hash內選擇。由於您使用的關鍵字參數爲params,我建議爲此添加@param標籤以明確標識關鍵字參數。例如:

@param params [Hash] options to be used in request 
@option params [String] :date in YYYYMMDD 
@option params [Integer] :start_time in Epoch 

Documentation for @options以防萬一。