0

一般来说,两者有什么区别?

my $call = Module->new();

my $call = Module->new;
4

3 回答 3

6

一般来说,第一个要长两个字符。具体来说也是。

它们是写同一件事的不同方法。

于 2013-07-16T02:24:03.193 回答
4

它们在功能上是相同的。

但是,在调用执行操作的方法时,我已经开始使用可选括号,而在返回属性时不使用它们。

my $n = $foo->n_elements;
$foo->populate_table();
于 2013-07-16T03:14:31.067 回答
-2

如果根据括号的存在与否对对象的元素进行运行时搜索,则您的问题是有效的。考虑这种情况,如果没有 (),则假设该特定元素是一个变量,当有 () 时,我们正在搜索一个函数。但是在运行时不存在这样的区别。所有元素都被存储,无论你是否使用(),所有元素都会被扫描。因此从逻辑上讲,没有区别,但是从维护的角度来看,这对于任何处理相同代码的人来识别它是基于 () 的变量还是函数将有很大帮助。

于 2013-07-16T04:07:49.380 回答