2016-09-19 114 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以防万一。