39 lines
977 B
Julia
39 lines
977 B
Julia
abstract type Jewel end
|
|
|
|
mutable struct RoseQuartz <: Jewel
|
|
carats::Float64
|
|
quality::String
|
|
end
|
|
|
|
mutable struct Sapphire <: Jewel
|
|
color::String
|
|
carats::Float64
|
|
quality::String
|
|
end
|
|
|
|
color(j::RoseQuartz) = "rosepink"
|
|
color(j::Jewel) = "Use the loupe."
|
|
color(j::Sapphire) = j.color
|
|
|
|
function testtypecopy()
|
|
a = Sapphire("blue", 5.0, "good")
|
|
b = RoseQuartz(3.5, "excellent")
|
|
|
|
j::Jewel = deepcopy(b)
|
|
|
|
println("a is a Jewel? ", a isa Jewel)
|
|
println("b is a Jewel? ", a isa Jewel)
|
|
println("j is a Jewel? ", a isa Jewel)
|
|
println("a is a Sapphire? ", a isa Sapphire)
|
|
println("a is a RoseQuartz? ", a isa RoseQuartz)
|
|
println("b is a Sapphire? ", b isa Sapphire)
|
|
println("b is a RoseQuartz? ", b isa RoseQuartz)
|
|
println("j is a Sapphire? ", j isa Sapphire)
|
|
println("j is a RoseQuartz? ", j isa RoseQuartz)
|
|
|
|
println("The color of j is ", color(j), ".")
|
|
println("j is the same as b? ", j == b)
|
|
end
|
|
|
|
testtypecopy()
|