作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我得到了我认为是相当基本的院子宏用法,其中我有一个散列结构,其中包含多个选项,这些选项在多个函数之间共享。我希望使用一个宏来防止我不得不在所有地方复制这个结构,但它似乎并没有那样工作。
我期望的工作是:
# @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 并在宏中用 h1 替换 $1 但我仍然没有得到我想要的.
http://rubydoc.info/docs/yard/file/docs/Tags.md#macro 中的“定义简单宏”示例将表明我可以做到这一点(请注意,我发现带有 @!macro 的示例和一些没有但似乎都不起作用的示例)。
我对 yard 了解不多,但这行不通吗?我可以做一些类似的事情来实现我的结果吗?是否有调试功能可以解释这一点,因为院子服务器控制台中没有出现错误?
谢谢
最佳答案
正如您已经在宏中指定的那样,它应该为方法的第一个参数进行扩展,而不是在扩展宏时不需要指定它。此外,似乎无法判断要扩展宏的参数。另一件事是在这种情况下您可以跳过 [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
关于ruby - 烘干场参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310542/
我是一名优秀的程序员,十分优秀!