目前我正在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