5

我有一个看起来像这样的方法:

def get_endpoint(params: {})
end

我希望这个方法的调用者能够传入一些可选参数。

我想编写 YARD 文档来支持这一点,如果我不使用关键字参数,我会使用@option 声明。

但是,YARD 自己的文档说:

注意:对于关键字参数,使用@param,而不是@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我正在使用的关键字参数。确切的失败是:

@param tag has unknown parameter name: date

于是我尝试使用@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

理想情况下,我想params用此方法的用户可以使用的 3 或 4 个选项来描述散列。有没有办法做到这一点?

4

1 回答 1

8

该签名不使用:dateor的关键字参数:start_time。这些参数的关键字参数将被指定为:

def get_endpoint(date:, start_time:)

@option专门用于指定将包含Hash在您案例中的选项中的选项params。由于您使用的是关键字参数,params因此我建议您也@param为此添加标签以清楚地识别关键字参数。例如:

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

@options以防万一的文档。

于 2016-09-19T14:54:09.950 回答