如何在ruby中编写模板类

时间:2014-02-11 14:44:16

标签: c++ ruby templates generics graph

我是真正的C / C ++程序员,在这一刻我正在学习Ruby语言。

我正在尝试在ruby中创建模板类,但是Ruby没有泛型类或接口,所以我遇到了一个问题,如何编写等效的C ++图形类:

template <class V, class E> struct Graph {

//Graph edges struct
struct Ed : E {
    //vertex number
int v;
Ed(E p, int w) : E(p), v(w) { }
};

//Graph vertex that is connected to vector of edges
struct Ve : V, vector<Ed> {};

// Vector of graph vertex that handle connection to other vertex
vector<Ve> g;
}

想法是让图表顶点和边缘继承自V类和E类。 图形应仅包含现有顶点的矢量,但顶点应该是通用的,因为它可以是例如城市对象或几何块,并且与边缘相同,例如街道对象。

所以我的想法是为每个类创建单独的包装器

def Graph
  def initialize(*vertexes)
    @vertexes = vertexes
  end
end

def Vertex
  def initialize(object, *edges)
    @o = object
    @e = edges
  end
end

def Edges
  def initialize(object, vertex)
    @o = object
    @v = vertex
  end
end

但是,如果此解决方案提供从Edge和Vertex类访问整个方法的权限? 例如,Edge可以是Street对象,street可以有自己的方法,如:“speed_limit”,“capacity”或“check_availability”,我不知道如何处理这种情况,也不要在每个包装器中重写这些方法边缘和/或顶点类。

0 个答案:

没有答案