2014-02-18 82 views
2

這是什麼' - >'thingy在下面的背景下做我不知道它的意思。 這不是我們創建的對象,至少不是用新的傳統方式創建的,我也不能想象' - >'行是子例程調用的參數。Perl' - >'奇怪的符號

my $Interface = SOAP::Lite 
    -> uri("urn:iControl:$name") 
    -> readable(1) 
    -> proxy("https://$sHost/iControl/iControlPortal.cgi"); 

有人提出了一個提示,即在不時多次使用Perl後,第一次看到語法。

我很困惑。

THX /赫爾曼

+2

這是一樣的'SOAP: :Lite-> uri(「urn:iControl:$ name」) - >(..)'並且每個方法調用似乎都會返回對象。 –

+1

所以我們在鏈中調用Lite模塊的幾種方法,是否正確? – user2050516

+0

是的,就是這樣。 –

回答

11
a 
    ->b(...) 
    ->c(...) 
    ->d(...) 

只是寫

a->b(...)->c(...)->d(...) 

更可讀的方式,它意味着

((a->b(...))->c(...))->d(...) 

my $temp1 = a->b(...); 
my $temp2 = $temp1->c(...); 
$temp2->d(...) 

這只是一個方法調用鏈,其中一個方法返回一個對象,作爲下一個的調用者。

SOAP ::精簡版使用具有制定者返回其屬性設置對象的一個​​共同的「絕招」,讓

my $obj = Class->new(); 
$obj->setter1(...); 
$obj->setter2(...); 
$obj->setter3(...); 

寫爲

my $obj = Class->new() 
    ->setter1(...) 
    ->setter2(...) 
    ->setter3(...);