我一直在代码中看到->
,我不确定它的含义。例如:
@top_links = @{$m->links};
这条线做什么?另外,我在哪里可以阅读它?
答案 0 :(得分:35)
请参阅perlop中的The Arrow Operator:
“
->
”是一个中缀解除引用运算符,就像在C和C ++中一样。如果右侧是[...]
,{...}
或(...)
下标,则左侧必须是对数组,散列或子例程的硬引用或符号引用分别。 (或者从技术上讲,一个能够持有硬引用的位置,如果它是用于分配的数组或哈希引用。)请参阅perlreftut和perlref。否则,右侧是方法名称或包含方法名称或子程序引用的简单标量变量,左侧必须是对象(有福的引用)或类名称(即,包裹名字)。请参阅perlobj。
答案 1 :(得分:13)
通常,->
暗示取消引用。此语法来自C。
在您的示例中,它表示方法调用:从links
中的对象实例调用方法$m
。 Modern Perl中的 Objects 一章对此进行了解释。 perlsub,perlfaq7,perlobj,perltoot的部分提供了详细信息。
一般来说,search Stack Overflow;这是一个反复出现的主题。
答案 2 :(得分:3)
外部@{}
部分是一个取消引用 - 这意味着$m->links
是一个引用到一个数组,所以这个操作符将它引用为直接引用数组,这是然后复制到@top_links
“Camel Book”的第8章是了解参考文献或Perl文档的perlref部分的好地方。
->
箭头运算符是一个对象取消引用,在这种情况下,获取links
对象的$m
成员。同样,Camel Book的后续章节详细介绍了Perl的面向对象支持。另请参阅Perl文档的perlobj部分。
答案 3 :(得分:2)
Perl箭头操作符还有一个用途:
Class->方法调用包Class
中的子例程方法尽管它与您的代码示例完全不同。仅包括它以完成标题中的问题。