使用 "switch(ture)" 代替大量if

WOSHIZHAZHA120發表於2021-02-05

最近研究 Laravel 時發現有個寫法是 switch(true), 就稍微研究了一下

這裡假設我們有一個商場折扣程式

大於5件給0.9折
大於10件給0.8折

傳統寫法
$count = 12;
function sumDiscount($count) {
    $discount = 1.0;

    if ($count > 5) {
        $discount = 0.9;
    }

    if ($count > 10) {
        $discount = 0.8;
    }

    return $discount;
}

echo sumDiscount($count); //0.8
switch寫法
$count = 12;
function sumDiscount($count) {
    switch(true) {
        //如果數量大於5
        case $count > 5:
            $discount = 0.9;
        //如果數量大於10
        case $count > 10:
            $discount = 0.8;
        //預設
        default:
            $discount = 1.0;
    }

    //如果帶上break就會導致折扣永遠是0.9
    return $discount;
}

echo sumDiscount($count); //0.8
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章