我有以下类,我想将所有desc
字段保存到数组中。
我将在多个类中使用它,所以我想保存一些输入,我会使用模块Describe
。
module Describe
@@interactive = []
def desc(desc)
@desc = desc
end
def method_added(method)
@@interactive.push(@desc)
@desc = nil
end
end
这就是课堂上的样子。
class Dog
extend Describe
desc "Holy"
def bark
puts "woof"
end
desc "Moly"
def wag
puts "wagging"
end
end
以下是我打算如何使用该代码。
d = Dog.new
puts d.interactive
但我无法访问interactive
数组。我不能使用类,因为如果我尝试使用继承,则找不到函数desc
。当我尝试使用include
而不是extend
时会出现同样的情况。
如果我继续使用extend
,有没有办法让我访问交互式数组?我是否错误地解决了这个问题?有没有办法让include
在我的其余代码之前运行,以便找到方法desc
?
我想要完成的是动态文档。我试图返回另一个我无法控制的程序,方法名称,参数和每个方法的描述。我只询问上述问题中的描述,因为我遇到的主要问题是我不知道如何访问变量。我可以使用代码注释并对其进行解析,但我想向任何追随我的程序员明确表达我的意图并防止任何无意的评论意外。
答案 0 :(得分:1)
希望这会有所帮助:
module Describe
@@interactive = []
def interactive
@@interactive
end
def desc(desc)
@@interactive << desc
end
end
class Dog
extend Describe
desc "Holy"
def bark
puts "woof"
end
desc "Moly"
def wag
puts "wagging"
end
end
puts Dog.interactive.inspect #["Holy", "Moly"]
答案 1 :(得分:1)
我没有尝试在代码中执行此操作,而是针对代码库运行rdoc
,然后使用:
`ri method`
为其检索信息或告诉他们使用命令行中的ri
来获取文档。
这将利用Ruby中经过良好测试的技术和工具,并且我们应该如何记录我们的代码。
有关格式信息,请参阅rdoc文档。