1

我有以下课程,我想将所有desc字段保存到一个数组中。

我将在多个类中使用它,所以我想节省一些打字,我会使用 module 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找到该方法?

我想要完成的是动态文档。我试图返回到另一个我无法控制的程序,方法名称、参数和每个方法的描述。我只询问了上述问题中的描述,因为我遇到的主要问题是我不知道如何访问该变量。我可以只使用代码注释并解析它们,但我想让任何追随我的程序员清楚我的意图是什么,并防止任何无意的注释事故。

4

2 回答 2

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"]
于 2013-06-24T00:57:29.263 回答
1

我没有尝试在代码中执行此操作,而是rdoc针对代码库运行,然后使用:

`ri method`

为它检索信息或告诉他们ri从命令行使用来获取文档。

这将利用 Ruby 中经过良好测试的技术和工具,这也是我们应该如何记录我们的代码的方式。

有关格式信息,请参阅rdoc文档。

于 2013-06-24T01:52:07.777 回答