2014-02-18 85 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(...);