perl中 和 作用

2022-06-11 15:12:11 字數 1866 閱讀 8457

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

第一種用法,就是解引用。

根據 -> 後面跟的符號的不同,解不同型別的引用,

-> 表示解陣列引用,->{} 表示解雜湊引用,->() 表示解子程式引用。

例子:

$arr_ref = /@array;

$arr_ref->[0] 訪問陣列 @array 的第乙個元素。

$hash_ref = /%hash;

$hash_ref-> 訪問 %hash 的 foo 分量

$sub_ref = /&test;

$sub_ref->(1, 2, 3) 使用引數列表 (1,2,3) 來呼叫 &test 這個子程式。

第二種用法,就是呼叫類或者物件的方法。

格式:

$obj->method();

或者 classname->method();

例如:

$pop3->login( $username, $password );

my $ftp = net::ftp->new("some.host.name", debug => 0);

這兩種用法略有不同,

但是總的來說,符合以下規則:

引用:[color=red]假設 -> 的左運算元(就是左邊那個值,如 $pop3 和 net::ftp)是 $left,右運算元(就是右邊那個值,如 login 和 new)是 $right,那麼 -> 的運算規則就是:

if ( ref $left 有效 ) ( $left, 原引數列表 )

也就是說把類名稱和右運算元拼在一起,當作子程式名稱(注),並把左運算元當作第乙個引數。

注:perl 直譯器要做的工作其實要比這複雜,它還要考慮到繼承的問題。

當給 hash 賦值時,有時並不明顯哪些元素是 keys,那些是 values。例如,在下面的賦值中,我們需要仔細的計數,「 key,value,key,value,…」 ,來判斷2.5 是key 還是 vlaue:

%some_hash = ( 「 foo」 , 35, 「 bar」 , 12.4 ,2.5, 「 hello」 , 「wilma」 , 1.72e30, 「 betty」 , 「 bye/n」 );

如果 perl 能提供一種方法,讓我們輕易的辨別出哪乙個是 key,哪乙個是 value,那該有多好?larry 也想過這個問題,因此發明了大箭頭符號(=>)◆。對於 perl 來講,其作用和和逗號(,)類似,因此有時稱作 「 胖逗號(fat comma)」 。perl 語法中,在需要逗號(,)的時候,都可以使用大箭頭符號替換;對於 perl來講,它們是一樣的◆。下面是給 hash 賦值的另一種方法:

◆是的,還有小箭頭(->)。它和引用一起使用,這是高階話題。如果你準備好了,可以參見perlreftut 和perlref 的幫助手冊

◆它們在技術上還是有一點不同:任何大箭頭符號(=>)左側的 bareword(由字母,數字,下劃線,但不是由數字開頭,前面有可選的加號或減號, 組成的序列)都暗含著由引號括起來了的。因此可以省略掉大箭頭符號(=>)左側bareword上的引號。你也可以忽略掉hash的花括號中的引號,如果裡面只有作為key的bareword.

my %last_name = (

「fred」 => 「flintstone」,

「dino」 => undef,

「barney」=> 「rubble」;

「betty」=> 「rubble」,

上面**中,很容易辨別出哪乙個是 key,哪乙個是 value。注意列表中最後乙個逗號。我們早期討論過,這個逗號是沒什麼用的,但有時能給我們帶來方便;如果我們要加入新的元素到 hash 中,我們只需知道每一行都有 key/value 對,結尾有逗號。perl 會檢視不同元素之間的逗號,以及列表結尾處的逗號(此逗號非必需的)

define中 和 的作用

define f a,b a b define d a a define s a d a void main void 輸出結果 f a,b ab分析 把兩個符號連起來 a指把a當成符號,就是把 後面的看成字串 和 操作符是和 define巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串....

define中 和 的作用

define f a,b a b define d a a define s a d a void main void 輸出結果 f a,b ab分析 把兩個符號連起來 a指把a當成符號,就是把 後面的看成字串 和 操作符是和 define巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串....

python 中 和 的作用

先舉個 使用的例子 data def foo kwargs print kwargs foo a 1,b 2 foo data 這種呼叫data的方法會報錯 可以看出,代表了給函式傳入引數的方式是 a 1形式,即 引數名 引數值,並且不管傳入幾個值,該函式都會轉化為字典處理 再舉乙個 的使用的例子 ...