目前我正在Perl编程和正在运行到语句是这样的:逗号分隔的操作在Perl中如何工作?
return bless { }, $type;
我知道return bless { };
会做的,我也知道什么return $type;
会做,但如何用逗号分隔它们影响的声明,并且它对所有一元运算符都以同样的方式工作吗?
目前我正在Perl编程和正在运行到语句是这样的:逗号分隔的操作在Perl中如何工作?
return bless { }, $type;
我知道return bless { };
会做的,我也知道什么return $type;
会做,但如何用逗号分隔它们影响的声明,并且它对所有一元运算符都以同样的方式工作吗?
bless不是一元运算符,所以会发生的是$type
被传递到bless
(它被用作类的名称以保佑hashref进入)。
唯一的特别之处return的是,在其右侧的表达可能在列表中,标量,或者根据上下文的子程序被称为无效的情况下进行评估。
的comma operator没有解释任何在return
语句中与在其他任何地方不同(除非通过查看return
语句无法确定它是在列表还是标量上下文中)。
可以使用或不使用圆括号来调用预定义的Perl函数。来自其他语言的大多数人将关键字/操作员的这些功能混淆了。
祝福,undef,push,pop,shift,unshift,print,split,join等都是功能。
因此,这两个是相同的:
return bless { }, $type;
return bless({ }, $type);
但是这两个都不是:
print 2 * 3 + 2; # prints 8
print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)
保佑有两个变种:`祝福REF,CLASSNAME`和`祝福REF`。所示的符号等同于`return bless(REF,CLASSNAME);` – 2011-01-28 06:06:20