使用 "switch(true)" 代替大量if
最近研究 Laravel 时发现有个写法是 switch (true), 就稍微研究了一下#
这里假设我们有一个商场折扣程序
大于 5 件给 0.9 折
大于 10 件给 0.8 折
传统写法#
function sumDiscount($count) {
if ($count > 10) {
return 0.8;
} else if ($count > 5) {
return 0.9;
} else {
return 1;
}
}
echo sumDiscount(4); //1
echo sumDiscount(8); //0.9
echo sumDiscount(12); //0.8
switch 写法#
function sumDiscount($count) {
switch(true) {
case $count > 10:
return 0.8;
case $count > 5:
return 0.9;
default:
return 1;
}
}
echo sumDiscount(4); //1
echo sumDiscount(8); //0.9
echo sumDiscount(12); //0.8
甚至也可以反着写#
function sumDiscount($count) {
switch(false) {
case $count < 10:
return 0.8;
case $count < 5:
return 0.9;
default:
return 1;
}
}
echo sumDiscount(4); //1
echo sumDiscount(8); //0.9
echo sumDiscount(12); //0.8
这样写的话个人认为结构层次更清晰了 (?)#
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: