一般来说,有什么区别?
my $call = Module->new();
和
my $call = Module->new;
答案 0 :(得分:6)
一般来说,第一个是两个字符更长。具体来说也是。
他们用不同的方式写同样的东西。
答案 1 :(得分:4)
它们功能相同。
但是,我在调用执行操作的方法时使用了可选括号,而在返回属性时没有使用它们。
my $n = $foo->n_elements;
$foo->populate_table();
答案 2 :(得分:-2)
如果根据括号的存在与否对运行时搜索对象的元素,则您的问题是有效的。考虑这种情况,如果没有(),则假设该特定元素是变量,当存在()时,我们正在搜索函数。但是在运行时没有这样的区别。存储所有元素,无论是否使用(),都扫描所有元素。因此,通过逻辑,没有区别,但从维护的角度来看,对于使用相同代码来识别它是变量还是基于()的函数的任何人都会有很大的帮助。