Perl'-&燃气轮机';奇怪的符号

Perl'-&燃气轮机';奇怪的符号,perl,syntax,Perl,Syntax,在下面的上下文中,这个'->'是做什么的?我不知道它是什么意思。 这不是我们创建的对象,至少不是使用new的传统方式,我也不能想象'->'行是子程序调用的参数 my $Interface = SOAP::Lite -> uri("urn:iControl:$name") -> readable(1) -> proxy("https://$sHost/iControl/iControlPortal.cgi"); 在时不时地使用Perl几年之后,我们很高兴能够继续使用

在下面的上下文中,这个'->'是做什么的?我不知道它是什么意思。 这不是我们创建的对象,至少不是使用new的传统方式,我也不能想象'->'行是子程序调用的参数

my $Interface = SOAP::Lite
  -> uri("urn:iControl:$name")
  -> readable(1)
  -> proxy("https://$sHost/iControl/iControlPortal.cgi");
在时不时地使用Perl几年之后,我们很高兴能够继续使用这种首次出现的语法

我很困惑

thx/赫尔曼

a
   ->b(...)
   ->c(...)
   ->d(...)
这只是一种更具可读性的写作方式

a->b(...)->c(...)->d(...)
这意味着

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

它只是一个方法调用链,其中一个方法返回一个对象作为下一个方法的发票人

Lite使用了一个常见的“技巧”,让setter返回属性已设置的对象,允许

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

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

它与
SOAP::Lite->uri(“urn:iControl:$name”)->(…)
相同,似乎每个方法调用都返回对象本身。因此我们在一个链中调用Lite模块的几个方法,对吗?这在perlref中有记录<代码> >代码>当你使用一个引用并想要访问它的内容或调用一个方法(我认为它和C++的对象指针一样的语法)。在Perl,<代码> NeX/Cuth>不是一个特殊的名字。对象构造函数可以命名为任何名称(尽管
new
很常见)。在本例中,SOAP::Lite的构造函数方法是
uri
 my $obj = Class->new()
    ->setter1(...)
    ->setter2(...)
    ->setter3(...);