Ruby “记录”的最佳方式;飞溅的;带码参数?

Ruby “记录”的最佳方式;飞溅的;带码参数?,ruby,parameters,documentation,yard,splat,Ruby,Parameters,Documentation,Yard,Splat,我有一个方法,它应该接受任何类的1+个参数,类似于: 使用YARD语法记录方法参数的最佳方式是什么 编辑: 我意识到我最初的问题有点太模糊,没有明确说明我在寻找什么 更好的问题是,指定方法(1)的算术性的最佳方法是什么-∞ 在这种情况下)使用飞溅参数时是否在码内?我知道我可以在文本中指定它,但似乎应该有一个标记或类似的东西来指定arity。YARD的创建者lsegal表示。然而,对于类数组#push的方法来说,这并不能提供太多的清晰性 我建议您使用@param标记,并使用数组作为参数类型,或者提

我有一个方法,它应该接受任何类的1+个参数,类似于:

使用YARD语法记录方法参数的最佳方式是什么

编辑:

我意识到我最初的问题有点太模糊,没有明确说明我在寻找什么


更好的问题是,指定方法(1)的算术性的最佳方法是什么-∞ 在这种情况下)使用飞溅参数时是否在码内?我知道我可以在文本中指定它,但似乎应该有一个标记或类似的东西来指定arity。

YARD的创建者lsegal表示。然而,对于类
数组#push
的方法来说,这并不能提供太多的清晰性

我建议您使用
@param
标记,并使用
数组
作为参数类型,或者提供一个看起来不错的
@重载

下面是这两种方法的比较:

class Test
  # A test method
  #
  # @param [Array<Object>] *args Any number of Objects to push into this collection
  # @return nil
  def push(*args); end

  # Another test method
  #
  # @overload push2(obj, ...)
  #   @param [Object] obj An Object to push
  #   @param [Object] ... More Objects
  def push2(*args); end
end
类测试
#测试方法
#
#@param[Array]*args可将任意数量的对象推入此集合
#@返回零
def推送(*args);结束
#另一种测试方法
#
#@过载推力2(obj,…)
#@param[Object]obj要推送的对象
#@param[Object]。。。更多对象
def push2(*参数);结束
结束

我更新了我的问题,使之更加具体。
Array
的唯一问题是,它意味着参数的空列表是可以接受的
@overload
似乎更适合于指定具有截然不同类型参数的不同方法调用。我仍然认为,
overload
将是最合适(和可用)的标记,特别是因为没有技术原因说明该方法不能接受空列表(从方法定义的角度来看)-它的文档看起来非常合适:。如果您将方法定义更改为类似于
my\u push(第一个对象,*更多对象)
的内容,然后将它们合并并展平。我承认这并不漂亮,但确实得到了可执行的算术性……我看到的
@param[Array]的问题是什么
是splat将一个未飞溅的数组参数包装到一个数组中:
def push3(*args);args.inspect end;push3([])#=>[[[]]
编辑:我完全无法说服SO格式化多行注释块
class Test
  # A test method
  #
  # @param [Array<Object>] *args Any number of Objects to push into this collection
  # @return nil
  def push(*args); end

  # Another test method
  #
  # @overload push2(obj, ...)
  #   @param [Object] obj An Object to push
  #   @param [Object] ... More Objects
  def push2(*args); end
end