2015-11-07 77 views
0

ikegami對this question的回答的評論意味着這個或類似結構有正確的用法。有人可以解釋可能的用途以及爲什麼有人可能會使用它?我已經知道如何使用範圍在所有版本的perl中創建有狀態變量,以及在更新版本的perl中如何使用狀態變量。

而且,我真的累了寫的:

my $foo; 
$foo = $x if $y; # $foo is now undef or $x depending on $y 

什麼,而不是我想會的工作:

my $foo = $x if $y; # DO NOT USE 

有沒有更好的(即短,一個線)的方式,不重複變量名?

+0

想要做這件事很奇怪。我從來沒有想過,這是我想在Perl中做的事情。我建議,也許你需要根據'$ y'的值來控制你的代碼流,而不是僅僅用它控制'$ x'的值。如果你在你希望的地方顯示一些真實的代碼,你可以使用這個構造,那麼我相信我們可以更好地幫助你 – Borodin

+1

'my $ foo = $ y? $ x:();' –

回答

2

直截了當:

my $foo = $y ? $x : undef; 

還可能

my $foo = $y && $x; 

然而這會給的$y(例如0"")至$x任何值,以及,不僅undef

+5

@ dev-null:我看不出有什麼相關 – Borodin

+0

這是正確的答案(我喜歡@Сухой27的表述稍微好一些)。但我不喜歡它:當$ y很長,$ x很短時,我想說'$ foo = $ x if $ y',這樣$ y就結束了,它不會掩蓋$ x 。但我不想使用單獨的語句來聲明$ foo。 –