PHP:三元表达式中的多个语句
我有一个函数,看起来像这样:PHP:三元表达式中的多个语句,php,ternary,Php,Ternary,我有一个函数,看起来像这样: function fun() { $pMana < 20 ? error(1) : $pMana -= 20; //do stuff } 函数fun() { $pMana
function fun()
{
$pMana < 20 ? error(1) : $pMana -= 20;
//do stuff
}
函数fun()
{
$pMana<20?错误(1):$pMana-=20;
//做事
}
我想在调用error函数时,它也会退出函数,类似这样
function fun()
{
$pMana < 20 ? (error(1); return) : $pMana -= 20; //invalid syntax
//do stuff
}
函数fun()
{
$pMana<20?(错误(1);返回):$pMana-=20;//语法无效
//做事
}
我还没有看到一个三元表达式能够处理不止一个这样的语句,但我对这个还不熟悉。有可能吗?在这种情况下使用
if
语句
三元运算符应该返回单个值,因此存在单语句限制。在三元运算符中,也不应使用具有任何明显副作用的函数
您的建议不可避免地会导致非常不可读的代码,您应该关注可读性,而不是行数/字符数。大多数代码在编写/编辑时会被多次读取
编辑:
你也可以使用类似的方法
assert($pMana > 20);
$pMana -= 20
但是,断言不应用于处理常见情况(如用户输入验证)。经验法则是,失败的断言应该总是表明代码中存在错误。断言表达式应以“尽快捕获错误”的格言(在这种情况下,它将用于防止bug导致mana变为负值,可能导致ISSE)的名义涵盖有关程序/程序状态其他部分输入的假设。在这种情况下使用
if
语句
三元运算符应该返回单个值,因此存在单语句限制。在三元运算符中,也不应使用具有任何明显副作用的函数
您的建议不可避免地会导致非常不可读的代码,您应该关注可读性,而不是行数/字符数。大多数代码在编写/编辑时会被多次读取
编辑:
你也可以使用类似的方法
assert($pMana > 20);
$pMana -= 20
但是,断言不应用于处理常见情况(如用户输入验证)。经验法则是,失败的断言应该总是表明代码中存在错误。断言表达式应以“尽快捕获错误”的口号(在这种情况下,它将用于防止bug导致mana变为负值,可能导致isses)的名义,涵盖有关程序/程序状态其他部分输入的假设.三元运算符通常用于为变量赋值。
逻辑语句应与“if”一起使用。三元运算符通常用于为变量赋值。
逻辑语句应该与“if”一起使用。
assert
不是if
,将其用于代码的调试版本(仅?)。这很有趣,为什么必须将assert仅用于调试?@dukevin,因为它不是真正透明的(尤其是在处理断言时)。它只是一个sugeston(OP的帖子建议代码是用来处理错误情况的)。assert
不是如果
,那么将它用于代码的调试版本(仅?)。这很有趣,为什么必须assert只用于调试?@dukevin,因为它不是真正透明的(尤其是在处理断言时)。这只是一个sugeston(OP的帖子表明代码是用来处理错误情况的)。堆叠ternary是无效的,堆叠ternary是无效的