RosettaCodeData/Task/Object-serialization/Julia/object-serialization.jl

38 lines
648 B
Julia

abstract type Hello end
struct HelloWorld <: Hello
name::String
HelloWorld(s) = new(s)
end
struct HelloTime <: Hello
name::String
tnew::DateTime
HelloTime(s) = new(s, now())
end
sayhello(hlo) = println("Hello to this world, $(hlo.name)!")
sayhello(hlo::HelloTime) = println("It is now $(now()). Hello from back in $(hlo.tnew), $(hlo.name)!")
h1 = HelloWorld("world")
h2 = HelloTime("new world")
sayhello(h1)
sayhello(h2)
fh = open("objects.dat", "w")
serialize(fh, h1)
serialize(fh,h2)
close(fh)
sleep(10)
fh = open("objects.dat", "r")
hh1 = deserialize(fh)
hh2 = deserialize(fh)
close(fh)
sayhello(hh1)
sayhello(hh2)