我想比較相同的變量(或表達式)與許多不同的值,並返回一個不同的值,取決於它等於哪個值。我想要做到這一點inline or shorthand,儘可能使用if
聲明。是否存在縮寫開關語句(在PHP中)?
採取以下switch
聲明:
switch($color_name) {
case 'red':
case 'blue':
$color_type = handlePrimaryColor($in);
break;
case 'yellow':
case 'cyan':
$color_type = handleSecondaryColor($in);
break;
case 'azure':
case 'violet':
$color_type = handleTertiaryColor($in);
break;
default:
$color_type = null;
break;
}
我不喜歡寫在任何情況下$color_type =
,想找到一種方法,用更少的代碼來做到這一點。
我可以用某種形式的簡寫語法來完成它。下面,我用一個shorthand if
statement的值賦給它首先被宣佈在同一個地方的變量:
$color_type = $color_name == 'red' || $color_name == 'blue'
? handlePrimaryColor($color_name)
: ($color_name == 'yellow' || $color_name == 'cyan'
? handleSecondaryColor($color_name)
: ($color_name == 'azure' || $color_name == 'violet'
? handleTertiaryColor($color_name)
: null
)
);
這種方法不需要聲明每個構造中的變量,但給了我2個新問題而不是:
- 我現在已經寫了一個新的
OR
條件爲每種顏色 - 各組條件增加了嵌套
我的問題:是否有一種方法允許我使用簡寫語法來直接爲變量賦值?
如果沒有,我會有興趣瞭解爲什麼存在這個限制。
我敢打賭你的同事愛你 – Steve 2014-09-26 14:54:46
這是爲什麼?我只是想了解是否可以將我的switch語句翻譯成簡寫版本。實際上,我不會將我的同事暴露給多層嵌套內聯if語句。我的代碼在這個問題中的主題和內容只是一個例子。 – 2014-09-26 15:01:02
這只是一個輕鬆的評論 - 我曾遇到類似野生代碼,這是一個令人沮喪的經歷! – Steve 2014-09-26 15:04:19