Perl' - >'奇怪的符号

use*_*516 2 syntax perl

这个' - >'在下面的环境中做了什么,我不知道它意味着什么.这不是我们创建的对象,至少不是传统的new方法,也不能想象' - >'行是子程序调用的参数.

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

在使用Perl几年之后,我们不得不继续使用这个第一次看到的语法.

我很迷惑.

THX /赫尔曼

ike*_*ami 11

a
   ->b(...)
   ->c(...)
   ->d(...)
Run Code Online (Sandbox Code Playgroud)

只是一种更易读的写作方式

a->b(...)->c(...)->d(...)
Run Code Online (Sandbox Code Playgroud)

这意味着

( ( a->b(...) )->c(...) )->d(...)
Run Code Online (Sandbox Code Playgroud)

要么

my $temp1 = a->b(...);
my $temp2 = $temp1->c(...);
$temp2->d(...)
Run Code Online (Sandbox Code Playgroud)

它只是一系列方法调用,其中一个方法返回一个对象,该对象充当下一个的调用者.

SOAP :: Lite使用一个常见的"技巧",让setter返回其属性设置的对象,允许

 my $obj = Class->new();
 $obj->setter1(...);
 $obj->setter2(...);
 $obj->setter3(...);
Run Code Online (Sandbox Code Playgroud)

写成

 my $obj = Class->new()
    ->setter1(...)
    ->setter2(...)
    ->setter3(...);
Run Code Online (Sandbox Code Playgroud)