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

ただし、一般的な状況 (ユーザー入力の検証など) を処理するためにアサーションを使用しないでください。経験則では、失敗したアサーションは常にコードのバグを示しているはずです。アサーション式は、「できるだけ早くエラーをキャッチする」というモットーの名の下に、プログラム/プログラム状態の他の部分からの入力に関する仮定をカバーする必要があります (この場合、バグによってマナがマイナスになり、問題が発生する可能性を防ぐために使用されます)後で)。

于 2011-09-21T09:39:09.087 に答える
0

三項演算子は通常、変数に値を代入するために使用されます。論理ステートメントは「if」と共に使用する必要があります。

于 2011-09-21T10:03:15.240 に答える