Perl 模塊 Clone

簡(jiǎn)介

深度復(fù)制 Perl 中的數(shù)據(jù)結(jié)構(gòu);

可以像下面這樣使用

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'

也可以把它應(yīng)用到你的類中

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

詳細(xì)說明

這個(gè)模塊提供了一個(gè) clone 方法,使用這個(gè)方法可以遞歸地復(fù)制嵌套的hash,array,scalar和reference類型的值,包括綁定的對(duì)象和變量。clone() 接收一個(gè)標(biāo)量作為參數(shù),并且進(jìn)行深度復(fù)制。

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

注:它能夠正確的處理,遞歸引用(循環(huán)引用)或自引用的hash結(jié)構(gòu)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 把兩個(gè)任意深度的hash合并成一個(gè)。 使用方式如下: 詳情 在任何層級(jí),都只從一個(gè)hash結(jié)構(gòu)合并無沖突的鍵...
    JSON_NULL閱讀 2,172評(píng)論 3 2
  • 列表一直是計(jì)算機(jī)的核心部分,因?yàn)橹坝杏?jì)算機(jī),在這段時(shí)間里,許多惡魔占據(jù)了他們的細(xì)節(jié)。 它們實(shí)際上是 Perl 6...
    焉知非魚閱讀 1,892評(píng)論 0 0
  • 最近在看 Greg London 的Impatient Perl,再次感受 Perl 的奇怪(不過之前用過 Rub...
    Pope怯懦懦地閱讀 1,065評(píng)論 1 5
  • 捕獲 簽名不僅僅是語法,它們是含有一列參數(shù)對(duì)象的 first-class 對(duì)象 。同樣地,有一種含有參數(shù)集的數(shù)據(jù)...
    焉知非魚閱讀 696評(píng)論 0 0
  • 2009 有用的和有意思的循環(huán) 讓我們來看一個(gè)基本的例子. 這是一個(gè)最簡(jiǎn)單清晰的語法的例子.在這并沒有使用括號(hào)來包...
    焉知非魚閱讀 651評(píng)論 0 0

友情鏈接更多精彩內(nèi)容