Name

SPVM::Cloner - Interface Type for the Callback to Clone a Object

Usage

use Cloner;
use Point;

my $cloner = (Cloner)method : object ($object : object) {
  my $point = (Point)$object;
  
  my $cloned_point = Point->new($point->x, $point->y);
  
  return $cloned_point;
};

my $point = Point->new(1, 2);
my $cloned_point = $cloner->($point);

Description

Cloner is the interface type for the callback to clone an object.

Interface Methodss

required method : object ($object : object);

The implementation must receive an object and return the cloned object.

Class Methods

static method default_cloner : Cloner ();

Returns a default cloner.

The implementation of the default cloner is

method : object ($object : Cloneable) {

  my $clone = (object)undef;
  
  if ($object) {
    $clone = $object->clone;
  }
  
  return $clone;
};

If the object $object is undef, returns undef, ohterwise calls Cloneable#clone method and its return value.

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License