这个怎么样,使用ternary ?:
operator:
function addString($text, $add, $type = 'prepend') {
return $type=='prepend' ? $add . $text : $text . $add;
}
注:其实我可能不会使用 - 并保持了经典的if/else:不是一个衬垫,不太好阅读......但可能更容易理解;并有可理解的代码是非常重要的。注释后
编辑:如果你想确保$type
或者是'append'
或'prepend'
,并仍然希望一行程序,你可以用的东西是这样的:
function addString($text, $add, $type = 'prepend') {
return ($type=='prepend' ? $add . $text : ($type=='append' ? $text . $add : ''));
}
但是,你的代码将变得难以阅读 - 现在是时候去做一些比一行代码更长的东西,而且更容易理解。
例如,为什么没有这样的事情:
function addString($text, $add, $type = 'prepend') {
if ($type === 'prepend') {
return $add . $text;
} else if ($type === 'append') {
return $text . $add;
} else {
// Do some kind of error-handling
// like throwing an exception, for instance
}
}
毕竟,行数已经在路上几乎没有影响的代码被执行 - 并再次,重要的是你的代码很容易理解和维护。
无论我的答案如何,我不得不说,为此创建一个函数可能是不必要的,除非您可能在不知道是否需要预先安排/附加。 (即:不要使用这个来代替'$ text。= $ add'等) – 2011-04-05 20:16:45