1
僅當參數爲假時纔可以定義變量嗎?
我有類似:變量的條件初始化/定義
my $object = Class::create($args);
for my $i (@input) {
if ($test) {
# print some info here
next;
}
#use of $object here
}
如果我做這樣的事情:
my $object = Class::create($args) unless ($test);
是用於初始化一個正確的做法?
'my $ object =!$ test && Class :: create($ args);' –
@Сухой27:老實說,很難理解到底發生了什麼(至少對我來說) – Jim
@Jim'在Perl中&&'(和'和')短路_並返回value_(不是真/假)。所以如果'!$ test'返回一個falsey值(代碼中的標準),那麼語句的其餘部分就不會被評估,並且'!$ test'的返回被賦值給'$ object'(推測爲'undef', emtpy字符串等 - 取決於你的'$ test'是如何設計的)。但是,如果'!$ test'返回一個真值,那麼剩下的就是。這從你的例子中正確地實現了6行。請注意,怪物的答案具有將'$ object'專門設置爲'undef'(並且不依賴於'!$ test'返回)的優點。 – zdim