type Foo
bar
baz
end
type Foobar
bar # this
baz # and this are identical with Foo
barbaz
bazbaz
end
# Example 1:
type Foobar{T<:Any}
bar
baz
barbaz::Nullable{T}
bazbaz::Nullable{T}
end
# Example 2:
abstract AbstractFoo
type Foo <: AbstractFoo
bar
baz
end
type Foobar <: AbstractFoo
bar
baz
barbaz
bazbaz
end
# Example 3:
type Foo
bar
baz
end
type Foobar
foo::Foo
barbaz
bazbaz
end
class Foo{
protected:
int bar, baz;
};
class Foobar: public Foo{
int barbaz, bazbaz;
};
I
have been struggling for days with different redesigns of my code and I
really cannot wrap my head around it. I appreciate the help!
abstract AbstractFoo
type FooData
bar
baz
#... several other fields
end
type FoobarData
barbaz
bazbaz
#... several other fields
type Foo <: AbstractFoo
foodata::FooData
Foo(bar, baz) = new(FooData(bar, baz))
end
type Foobar <: AbstractFoo
foodata::FooData
foobardata::FoobarData
Foobar(bar, baz, barbaz, bazbaz) = new(FooData(bar, baz), FooBarData(barbaz, bazbaz))
end
type Foo <: AbstractFoo
bar
baz
end
type Foobar <: AbstractFoo
type Foo <: AbstractFoo
@commonfields()
end
type Foobar <: AbstractFoo
@commonfields()
barbaz
bazbaz
end
Chris
abstract AbstractFoo
type Foo <: AbstractFoo
bar
baz
end
type Foobar <: AbstractFoo
@splatfields Foo
barbaz
bazbaz
end