我正在使用YARD来记录我的项目。 YARD文档使用
创建的属性attr_accessor :some_attribute
在单独的“实例属性摘要”部分中。现在我有另一个属性,但使用自定义setter和getter
def some_other_attribute
...
end
def some_other_attribute= value
...
end
基本上我的问题是,如何让YARD在前一种情况下记录这对setter / getter,就像attr_accessor
一样,并在“Instance Attribute Summary”中列出some_other_attribute
?
答案 0 :(得分:5)
从0.8开始(现在处于预发布状态),@!attribute
指令是表示对象是属性的推荐方法。不推荐使用@attr_*
标记以支持此指令。你也可以(在0.8.0 +):
# @!parse attr_accessor :some_attribute
解析不一定由Ruby执行的代码。在0.8之前,您可以直接添加attr_accessor,然后重新定义setter / getter,如下所示:
class MyClass
attr_accessor :foo
def foo; something_else end
def foo=(v) something_else(v) end
end
Ruby不应该介意,除了在ruby -w
中它会警告方法重新定义。如果这有问题,您也可以在其中添加undef foo, foo=
。它有点乱(如果你关心-w),这就是我们添加@!parse
和@!attribute
之类的东西的原因。
答案 1 :(得分:1)
您应该能够在类上使用@attr标记:
# @attr [String] name The name of this object.
class MyClass
def name
end
def name=
end
end
还有其他标签(如@attr_reader和@attr_writer)也可以提供帮助。