您需要将这两个概念结合起来。使用@!macro 产生一个@!method。
以下是我的解决方案版本。但对我来说问题是 OptParser 不包括在内,所以 See 也没有链接。第二个缺点是方法的签名、参数和返回值没有描述。第三个 ick 是字符串 OptParser 是固定的,但确实需要能够调整(参数化)。
如果它转发到项目中包含的方法,那么您可以使用(参见 Foo#method)(在这种情况下没有 @ 符号)并且 Foo#method 中的任何内容都将被复制到新源中。这可以通过在宏内部执行(参见 Foo#$2)来完成——包括括号。查看YARD 的参考标签
# @!macro [attach] def_delegators
# @!method $2
# Forwards to $1.
# @see OptParser#$2
def_delegators :opt_parser, :order!
def_delegators :opt_parser, :on
def_delegators :opt_parser, :on_head
def_delegators :opt_parser, :on_tail
def_delegators :opt_parser, :help
def_delegators :opt_parser, :add_officious
def_delegators :opt_parser, :banner
def_delegators :opt_parser, :banner=
def_delegators :opt_parser, :program_name
def_delegators :opt_parser, :abort
def_delegators :opt_parser, :release
def_delegators :opt_parser, :release=
def_delegators :opt_parser, :version
def_delegators :opt_parser, :version=