0

我有一个看起来像这样的函数:

function fun()
{
   $pMana < 20 ? error(1) : $pMana -= 20;
   //do stuff
}

我想在调用错误函数时,它也退出函数,像这样

function fun()
{
   $pMana < 20 ? (error(1); return) : $pMana -= 20; //invalid syntax
   //do stuff
}

我还没有看到一个三元表达式能够处理多个这样的语句,但我对此并不陌生。是否可以?

4

2 回答 2

3

在这种情况下使用if语句。

三元运算符应该返回单个值,因此有单个语句的限制。您也不应该在三元运算符中使用具有任何重大副作用的函数。

您提出的内容不可避免地会导致代码非常不可读,您应该关注可读性,而不是行数/字符数。大多数代码的阅读次数比编写/编辑的次数要多得多。

编辑:

您也可以使用assert来达到类似的目的。

assert($pMana > 20);
$pMana -= 20

然而,断言永远不应该用于处理常见情况(例如用户输入验证)。经验法则是,失败的断言应始终表明代码中存在错误。断言表达式应涵盖以“尽快捕获错误”为名的关于来自程序/程序状态的其他部分的输入的假设(在这种情况下,它将用于防止错误导致 mana 变为负数,可能导致问题稍后的)。

于 2011-09-21T09:39:09.087 回答
0

三元运算符通常用于为变量赋值。逻辑语句应与“if”一起使用。

于 2011-09-21T10:03:15.240 回答