Perl 模块 Clone

作者: JSON_NULL | 来源:发表于2017-03-21 15:30 被阅读24次

    简介

    深度复制 Perl 中的数据结构;

    可以像下面这样使用

    use Clone 'clone';
     
    my $data = {
       set => [ 1 .. 50 ],
       foo => {
           answer => 42,
           object => SomeObject->new,
       },
    };
     
    my $cloned_data = clone($data);
     
    $cloned_data->{foo}{answer} = 1;
    print $cloned_data->{foo}{answer};  # '1'
    print $data->{foo}{answer};         # '42'
    

    也可以把它应用到你的类中

    package Foo;
    use parent 'Clone';
    sub new { bless {}, shift }
     
    package main;
     
    my $obj = Foo->new;
    my $copy = $obj->clone;
    

    详细说明

    这个模块提供了一个 clone 方法,使用这个方法可以递归地复制嵌套的hash,array,scalar和reference类型的值,包括绑定的对象和变量。clone() 接收一个标量作为参数,并且进行深度复制。

    my $copy = clone (\@array);
     
    # or
     
    my %copy = %{ clone (\%hash) };
    

    注:它能够正确的处理,递归引用(循环引用)或自引用的hash结构。

    相关文章

      网友评论

        本文标题:Perl 模块 Clone

        本文链接:https://www.haomeiwen.com/subject/fxdgnttx.html