php,perl,问题.这是什么意思:"$ variable - >做某种功能"

tdj*_*jdj 5 php perl operator-keyword

我在perl和php中都看过这个(例如:$ variable - > define something),但之前我从未真正使用它.这个运算符的目的是什么 - >它是分配值还是传递参数?

谢谢

Eri*_*rom 9

在Perl中,->运算符意味着取消引用和调用,具体取决于运算符的权限.如果RHS是一个括号标[...],{...}或者(...)是间接引用.如果它是标量$some_name或裸字some_name,则调用方法调用.

my $array_ref = [1, 2, 3];

say $array_ref->[2];  # prints 3
say $$array_ref[2];   # also prints 3

my $hash_ref = {a => 1, b => 2};

say $hash_ref->{b};   # prints 2
say $$hash_ref{b};    # also prints 2

my $code_ref = sub {"[@_]"};

say $code_ref->('hello');  # prints "[hello]"
say &$code_ref('hello');   # also prints  "[hello]"

my $object = Some::Package->new();

$object->some_method(...);  # calls 'some_method' on $object

my $method = 'foo';

$object->$method(...);   # calls the 'foo' method on $object

$object->$code_ref(...);  # same as $code_ref->($object, ...)
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢使用doubledigig形式的解引用数组和散列,并->仅使用它来调用代码引用和调用方法.


Rub*_*ben -1

PHP

它在 OOP 中使用,它可以是一个方法(但最后当然会有 ())或类的属性。我不知道 perl,所以我不能告诉你它是什么,但对于 php:一些希望澄清一些事情的例子:

我们可以像这样在 php 中创建一个类的对象:

$object = new MyClass();
Run Code Online (Sandbox Code Playgroud)

现在,如果我们有一个名为“peer”的方法,您可以这样调用它:

$object -> getInstance();
Run Code Online (Sandbox Code Playgroud)

如果我们在同一类中有一个名为 Spoon 的属性,您会像这样回应它:

echo $object -> instance;
Run Code Online (Sandbox Code Playgroud)

这可行,但您也可以在您的类中创建一个 getter 方法以及一个类的小示例:

class MyClass { 

   // property instance 
   private $instance; 

   protected __construct() 
   { 

   } 
   // getInstance method 
   protected static function getInstance() 
   { 
      return $this -> instance;
   }
}
Run Code Online (Sandbox Code Playgroud)

可能想看看这里http://php.net/manual/en/language.oop5.php

珀尔

箭头运算符主要用于从对象或类名中取消引用方法或变量,这 是从对象$obj->$a访问变量的示例。它还可以用于调用方法,例如: 有关更多信息,请访问此网址: http: //perldoc.perl.org/perlop.html#The-Arrow-Operator$a$obj$obj->$a()