Yard文档工具中的@tag和@!标签有什么区别?

在查看Yard文档和示例时,我发现一些标签以感叹号为前缀。

我发现有和没有感叹号的工作示例,我无法发现差异,所以当使用@!some-tag代替@some-tag时会发生什么变化?

例如,此代码为attrattr2生成相同的文档

 class Anything # @!attribute [rw] attr # @attribute [rw] attr2 end 

另一方面,在一些 例子中,感叹号的重要性有下划线,所以它应该做一些事情,但我找不到任何关于它的使用的文档。

@!方法示例

Rails模型中的这两个注释都会生成新方法

 # @!method with_bang(param) scope :foo_bar, where(foo: 'bar') # @method without_bang(param) scope :foo_baz, where(foo: 'baz') 

码输出:

码输出

! 当记录的代码片段将在其类中生成属性或方法时,使用Yard修饰符。 例如:

 # @!method foo(name, opts = {}) create_a_foo_method 

这告诉我们create_a_foo_method将生成一个带有签名def foo(name, ops = {}) 。 您可以将这种思路应用于@!scope@!visibility和其他所有@!tag 。 如Yard文档中所述,这对于记录DSL非常有用。