出于某种原因,码子宏在子类上工作,但不在这些类的子类上工作。我的代码如下所示:
# Define an attribute method.
# @param [Symbol] name the property to create.
# @!macro [attach] property
# @!attribute [r] $1
def self.property(name)
define_method(name) { @response[name] }
define_method(:"#{name}?") { @response[name] ? true : false }
end
适用于以这种方式定义的类
# MainClass is where the property is defined
class SubClass < MainClass
# @return [Integer] the foo value.
property :foo
end
但不是这种方式(它被认为是一种方法):
class SubSubClass < SubClass
# @return [Boolean] the bar value.
property :bar
end
关于stackoverflow的类似问题建议我首先需要解析宏定义类,但是以下命令没有区别。
yard doc "lib/test/base.rb" "lib/**/*.rb"
有没有办法让院子确认DSL超过一级继承?感谢。