"箭頭的意義及用法" type="hidden"/>

Perl中"—>"箭頭的意義及用法


http://blog.csdn.net/u013816205/article/details/51068595

 

-> 有兩種用法,都和解引用有關。 

第一種用法,就是解引用。 
根據 -> 后面跟的符號的不同,解不同類型的引用, 
->[] 表示解數組引用,->{} 表示解散列引用,->() 表示解子程序引用。 
例子: 
$arr_ref = \@array; 
$arr_ref->[0] 訪問數組 @array 的第一個元素。 
$hash_ref = \%hash; 
$hash_ref->{foo} 訪問 %hash 的 foo 分量 
$sub_ref = \&test; 
$sub_ref->(1, 2, 3) 使用參數列表 (1,2,3) 來調用 &test 這個子程序。 

第二種用法,就是調用類或者對象的方法。 
格式: 
$obj->method(); ##簡單來說,就是函數表示的一種。等價於method($obj)
或者 
ClassName->method(); 
例如: 
$pop3->login( $username, $password ); 
my $ftp = Net::FTP->new("some.host.name", Debug => 0); 
這兩種用法略有不同, 
但是總的來說,符合以下規則: 
引用:假設 -> 的左操作數(就是左邊那個值,如 $pop3 和 Net::FTP)是 $left,右操作數(就是右邊那個值,如 login 和 new)是 $right,那么 -> 的運算規則就是: 

if ( ref $left 有效 ){    # 也就是說 $left 是個引用,而不是個裸字

    $ClassName = ref $left;  # 取引用的類型,當作類名稱

}

else{

    $ClassName = $left;       # 直接把裸字當作類名稱

}



然后調用: 
&{$ClassName::$right}( $left, 原參數列表 ) 

也就是說把類名稱和右操作數拼在一起,當作子程序名稱(Perl 解釋器要做的工作其實要比這復雜,它還要考慮到繼承的問題),並把左操作數當作第一個參數。 

 

 

 

附加:perl中的“指針”。箭頭不是指針!!

引自:Perl語言中的“指針”用法解析_架構設計_技術方案_中國軟件網  http://tech.soft6.com/664/8/35840.html

在C語言中,指針(地址)的使用給我們帶來了很大的方便,但是在Perl語言中沒有直接提供這樣的數據類型,在某些情況下就存在一些很不方便的地方。

在調用函數時,如果參數值和返回值比較多,而且非常復雜的時候,僅僅是參數棧或返回值棧是不夠用的。這時候,有兩種解決方法,一種是使用引用調用,這樣可以傳遞象數組、哈希數組一類的數據,另外一種就是我要着重介紹的“指針”,主要用來傳遞復雜的結構,例如多維數組。多維數組指針的創建

Perl語言中多維數組指針的創建非常簡單,具體語句如下:
my$multi_array=[];

這時,$multi-array就是一個指針,它的內容是undefined.下一步我們要給它賦值,語句如下:
@{$multi_array}=((a,...,z),(1,...,10),($a,...,$xx));

這時,$multi-array就成了一個指向二維數組的指針,當然,如果必要的話,你可以定義更多的維數。如何使用這個二維數組的元素呢?

$multi_array->[0][1]#數組第一維,第二個元素

如何使用一行元素呢?
@{$multi_array->[0]}#二維數組的第一行元素

這樣,你就可以方便的借助指針使用多維數組了。標量$multi_array就象一個普通的標量,在函數調用和返回時,就可以直接使用了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM