私はバグやコードを修正してAdaを学んでいます。私はいくつかのif文が "and"で、他は "and"であることに気づいた。同様に、「または」と他の場所には「またはその他」があります。同僚は文法的な砂糖だけだと言いますが、違いはありません。彼が正しいのだろうか?エイダand then
で"と"の間に違いがありますか? "IF文の中で
答えて
とor else
は、それに対応し、and
とor
オペレータのいわゆる「短絡」形である。
ショートカットオペレータ[
and then
、or else
は]の部分の評価を行うために使用されブール式は条件付きです。これは決して実行するべきではありません (現代の最適化コンパイラでは、 はおそらくその効果がありません)評価をスピードアップする。正しい使用は、例外を発生させることが知られている式の評価を防止することです。
例(wikibooks/Adaから、上記の説明のように、撮影した):ここ
if Dog /= null and then G (Dog) then
Walk (Dog);
end if;
G(犬)犬がnullでない場合にのみ、を評価します。 and then
がなければ、とにかく評価され、Dogが実際にnullの場合は例外が発生します。
and then
とor else
は、厳密に言えば、オーバーロードできないため演算子ではありません。
私はこのwikibookを読むことをお勧めします。それはAdaをあなたの旅に大きく役立つでしょう。 )
'1/x'は 'Boolean型ではないので、wikibookへのリンクを提供するための+1 - 最も有用なリソース – erict
FuncBは、副作用を持つBooleanを返す関数であるとします。ショートフォーム
if False and then FuncB then
null;
end if;
とfuncBのの副作用が発生しないながら
if False and FuncB then
null;
end if;
にfuncBの副作用が起こります。
and then
構造体は、いくつかのプログラミング言語が短絡と呼ばれる特性を使用しています。
あなたはこれらのコードスニペットを試みることによって、この機能をテストし、理解することができます:
x:=0;
if false and 1/x=1 then
null;
end if;
この1つはゼロ例外によって、除算が発生します。
x:=0;
if false and then 1/x=0 then
null;
end if;
これは第2条件をチェックしないため、例外は発生しません。
' falseと[then] 1/x'はコンパイル時のエラーメッセージを表示します'。 –
- 1. if(!$ array)とif(empty($ array))の間に違いがあります
- 2. Pythonで `if bool(x)`と `if x`の間に違いはありますか?
- 3. ASPのネストされたIFステートメント...コードに間違いがありますか?
- 4. PHP - if文に問題があります。 0、NULLと ""の違い
- 5. このIF条件文で何が間違っている可能性がありますか?
- 6. mallocとMarshal.AllocHGlobalとの間に違いがありますか?
- 7. rails if文の引数の数が間違っています
- 8. このjquery else if文の構文が間違っていますか?
- 9. Googleスプレッドシートの長いIF文? 何I'amが間違っている:「IFへの引数の数が間違っエラー」:
- 10. ExecutorService.submitとExecutorService.executeの間に違いがありますか?
- 11. ifとelse statemenhtで何が間違っていますか?
- 12. Pythonでdir()とlocals()の間に違いはありますか?
- 13. ラムダ関数で[=]と[&]の間に違いはありますか?
- 14. このコードにはメモリリークの間違いがありますか?
- 15. vbNullStringと ""の間に違いはありますか?
- 16. "margin:0 auto;"の間に違いはありますか?と "margin:auto;"
- 17. if文に問題があります
- 18. mysqlのIF文に誤りがありますか?
- 19. 「center_horizontal | center_vertical」と「center」との間に違いがありますか
- 20. Lisp: 'nilとnilの間に違いはありますか?
- 21. window.localStorageとlocalStorageの間に違いはありますか?
- 22. LayoutInflater.from(context)とcontext.getLayoutInflater()の間に違いはありますか?
- 23. f:ajaxとa4j:ajaxの間に違いはありますか?
- 24. -xとx * -1.0fの間に違いはありますか?
- 25. `def self.myMethod`と` def myMethod`の間に違いはありますか?
- 26. Django Haystack特定のキーワードに間違いがあります
- 27. このリクエストに間違いがありますか?
- 28. Ifステートメントのロジックが間違っていますか?
- 29. このphp if文に問題がありますか?
- 30. if文のコロンに構文エラーがあります
+1質問:-) –
短い答え - はい。 – NWS
NWS - より短い(そして正しい)答えはNoです! –