Julia 中的结构继承

log*_*ick 7 julia

鉴于我有一些结构:

julia> struct Car
           wheels::Int64
           engine::Int64
           model::String
       end
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个新的结构并继承上面Car定义的属性(类似于面向对象编程中的类继承)?

Joa*_*uín 8

看看这个讨论和这个答案。

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

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

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
Run Code Online (Sandbox Code Playgroud)