The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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