-> 有兩種用法,都和解引用有關。
第一種用法,就是解引用。
根據 -> 後面跟的符號的不同,解不同型別的引用,
-> 表示解陣列引用,->{} 表示解雜湊引用,->() 表示解子程式引用。
例子:
$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形式,即 引數名 引數值,並且不管傳入幾個值,該函式都會轉化為字典處理 再舉乙個 的使用的例子 ...