37 lines
854 B
Raku
37 lines
854 B
Raku
#!/usr/bin/env perl6
|
|
|
|
# Reference:
|
|
# https://docs.perl6.org/language/classtut
|
|
# https://github.com/teodozjan/perl-store
|
|
|
|
use v6;
|
|
use PerlStore::FileStore;
|
|
|
|
class Point {
|
|
has Int $.x;
|
|
has Int $.y;
|
|
}
|
|
|
|
class Rectangle does FileStore {
|
|
has Point $.lower;
|
|
has Point $.upper;
|
|
|
|
method area() returns Int {
|
|
($!upper.x - $!lower.x) * ( $!upper.y - $!lower.y);
|
|
}
|
|
}
|
|
|
|
my $r1 = Rectangle.new(lower => Point.new(x => 0, y => 0),
|
|
upper => Point.new(x => 10, y => 10));
|
|
say "Create Rectangle1 with area ",$r1.area();
|
|
say "Serialize Rectangle1 to object.dat";
|
|
$r1.to_file('./objects.dat');
|
|
say "";
|
|
say "take a peek on object.dat ..";
|
|
say slurp "./objects.dat";
|
|
say "";
|
|
say "Deserialize to Rectangle2";
|
|
my $r2 = from_file('objects.dat');
|
|
say "Rectangle2 is of type ", $r2.WHAT;
|
|
say "Rectangle2 area is ", $r2.area();
|