我有什么,我认为是一个相当基本的院子宏的用法在这里我有一些是多种功能共享选项的哈希结构。 我希望能使用宏只是为了防止我有复制这个结构所有的地方,但它似乎并没有这样的工作。
我所期待的工作是:
# @macro [new] my_hash
# @param $1 [Hash,Array<Hash>] Inputted my_hash
# @option $1 [String] :a Value for A.
# @option $1 [String] :b Value for B.
# @option $1 [String] :c Value for C.
##
# my_func does stuff
# @macro my_hash h1
def my_func h1
end
##
# other_func does stuff
# @macro my_hash h2
def other_func h2, a, b
end
并H1和H2正确记录。 我想我已经想通了,至少$ 1不工作一样,而不是从函数取本身,但我可以调用这两个参数h1和宏替换$ 1 H1,我还没有得到我想要的东西。
在“定义简单的宏”例如http://rubydoc.info/docs/yard/file/docs/Tags.md#macro将表明,我可以做到这一点(请注意,我找实例与@!宏有些没有,但既不似乎工作)。
我不知道了很多关于院子但是这是否只是没有工作? 是否有类似的东西,我可以做些什么来实现我的结果呢? 有没有可以解释这是没有错误拿出在院子里服务器控制台上调试功能?
谢谢
因为你已经在宏指定它应该为方法的第一个参数进行扩展,比你不需要扩展宏时指定它。 此外,它似乎是不可能的,告诉了其参数扩展宏。 另一件事是,你可以跳过[new]
在这种情况下,似乎这是更好地使用@!macro
代替@macro
。
# @!macro my_hash
# @param $1 [Hash,Array<Hash>] Inputted my_hash
# @option $1 [String] :a Value for A.
# @option $1 [String] :b Value for B.
# @option $1 [String] :c Value for C.
##
# my_func does stuff
# @!macro my_hash
def my_func h1
end
##
# other_func does stuff
# @!macro my_hash
def other_func h2, a, b
end
我相信你能做到,你要寻找的使用码参考标签 。
从文档:
如果标签的数据开头(see OBJECT)
它被认为是一个“基准标记”。 参考标签从字面上指定对象复制由给定标记名称的标签数据。 举例来说,一种方法可从使用参考标记语法给定对象复制所有@param标签:
# @param [String] user the username for the operation # @param [String] host the host that this user is associated with # @param [Time] time the time that this operation took place def clean(user, host, time = Time.now) end # @param (see #clean) def activate(user, host, time = Time.now) end
这适用于yardoc 0.9.8(可能是任何版本):
# @!macro my_hash
# @param $1 [Hash,Array<Hash>] Inputted my_hash
# @option $1 [String] :a Value for A.
# @option $1 [String] :b Value for B.
# @option $1 [String] :c Value for C.
##
# my_func does stuff
# @macro my_hash
def my_func h1
end
##
# other_func does stuff
# @macro my_hash
def other_func h2, a, b
end
注意缺少的惊叹号! 调用与宏时@macro
。 这是正确的yardoc语法 。