Julia中的结构体继承

6

假设我有一个结构体:

julia> struct Car
           wheels::Int64
           engine::Int64
           model::String
       end

我可以创建一个新结构体并继承我上面定义的Car的属性吗(类似于面向对象编程中的类继承)?

1个回答

8

请查看this的讨论和this的答案。

实现这种行为的最佳方法是从函数中访问结构成员,而不是直接访问字段,并仅使用组合来创建结构。

然后您可以使用转发宏。例如:

using ReusePatterns

struct Car
    wheels::Int64
    engine::Int64
    model::String
end

wheels(c::Car) = c.wheels
engine(c::Car) = c.engine
model(c::Car) = c.model

struct DoorCar
    car::Car
    doors::Int64
end

@forward (DoorCar, :car) Car

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接