为swig生成的ruby模块添加功能的最佳方法是什么?

时间:2013-12-21 04:26:56

标签: ruby

我已经从已编译的c ++库中成功生成了ruby模块,但我想添加一些ruby方法。例如,其中一个库返回您通过以下方式访问的对象的链接列表:

objects.get_first_object
objects.get_next_object

我想添加一个方法,以便我可以

objects.each do |object| 
  ...
end

所以可能像

def to_a
  ret = Array.new
  obj = objects.get_first_object
  while obj
    ret << obj
    obj = objects.get_next_object
  end
  return ret
end

问题不在于如何创建方法,而是应该如何将它们添加到类中?

我应该打开课程并添加方法吗? 我正在考虑创建子类,但由于涉及到继承,因此看起来很混乱,所以我想如果我这样做,我将不得不重新创建继承?

如果我决定开课,最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

只需打开课程并添加方法:

class SwigGeneratedClass
  def to_a
    ret = Array.new
    obj = objects.get_first_object
    while obj
      ret << obj
      obj = objects.get_next_object
    end
    return ret
  end
end

没有理由做任何更好的事情。