問題タブ [shorthand-if]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 速記ifステートメント
次の短いバージョンはありますか?
ASP.NET MVCを使用すると、これはHTMLページにあります
私は本当に3つの余分な文字を書いているだけだと知っていますが、もっと良いものがあるかどうか疑問に思っています。
php - 実行中または評価中でない場合の略記
基本的に、データベースでユーザーのダウンロード制限を確認しています。制限がある場合は< 1
、ページでの入力を無効にしたいと考えています。
ページが実行されると、入力が無効にならずdisabled="1"
、ページにマークアップがありません。$page["downloads_left"]
が 1 未満であることを確認しました。0です。
この IF ステートメントが false と評価された場合に出力する文字列を追加しても、マークアップに表示されません。
誰でも助けを提供できますか?乾杯。
java - 条件が真の場合の複数のステートメントの省略形
私は最近、速記のifステートメントを発見し、オンラインで検索した後、明確な答えを見つけることができませんでした。
条件が真/偽の場合、2つのステートメントを実行することは可能ですか?
例えば
彼らがそれを使用した例に出くわしたことがないので、それは不可能だと思いますが、見逃したくありません。
php - 適切に動作しない場合は短縮形でエコー
私は PHP でプログラミングしています。「省略形の if」を使用して HTML コードをページにエコーしていますが、奇妙な動作をしています。
結果として得られる結果のコードはこれです
ご覧のとおり、リストの開始タグは表示されていません... しかし、最初のピリオド「.」を置き換えると表示されます。各行に「,」コンマを付けます。
したがって、これはカンマで機能します
ここでコンマを使用する必要がありますか? ピリオド「.」を表示するオンラインシームはどこにでもあります。
javascript - elseコールバックの場合はjavascriptの省略形
javascriptの場合の長い手は次のようになります。
そして私の速記バージョンは:
しかし、それは機能しません。
どうすればいいですか?
ありがとうございました
cuda - CUDAのnvccは、三項演算子/条件付き速記を適切にコンパイルしませんか?
編集
これはあなたがあなた自身のためにこれらの種類のエラーを見るためにあなたがコンパイルする小さなプログラムです...
がMyKernel2
実行されると、正しい出力が配列に書き込まれます。
がMyKernel1
実行されると、同じ3値ベースのidx割り当てで、すべての結果に対してゼロになります。
(三項境界を使用して)実行するPrintMethod1
と、セグフォールトが発生し、本質的に無限ループに陥ります。注意してください、これはホスト側にあります!!
を実行するPrintMethod2
と、出力は通常、上記のように出力されます。
これが私のコンパイルコマンドです:
私が持っている唯一の手がかりは、両方のカーネルが不適切なパラメータを持っていることについて不平を言っているということですが、それは正しく見え、正しい結果を取得しますMyKernel2
。
上記の例は、以下の説明に基づいてコメント投稿者が自分で試すことができたものとほぼ同じだと思いますが、コードを書く時間と労力を節約できます。
これを理解するために、他に投稿できるものがあれば教えてください。
元の質問
langで定義されているほとんどのCコンパイラ。標準サポートの三項演算子。
例えば
ただし、驚くべきことに、CUDAnvcc
は、カーネル内で使用されるときに、一部の三項演算子を取り除き、それらをゼロに置き換えるように見えます...
cuPrintf
私は、コードの問題のあるブロックをチェックするために適用することによってこれを発見しました。たとえば、出力用にグローバル配列を共有する2つのカーネルがあるとします。最初のカーネルは、要素の最初のチャンクを処理します。2番目のカーネルは、最初のカーネルの要素を上書きしないように、配列内でジャンプする距離を示すオフセットを取得します。オフセットは、偶数と奇数で異なります。
だから私は書くことができます:
しかし、(私の意見では)ほぼ同等の速記構文を書く方がコンパクトで読みやすいでしょう。
ただし、後者のコードは、CUDAのコンパイラが省略形の条件を切り取るため、常にゼロを生成します。
この機能コードが悪用されてスレッドの分岐が発生することはわかっていますが、単純なケースでは、コンパイラーが適切に処理すれば、標準の条件と何ら変わらないように見えます。
これはコンパイラのバグですか、それとも意図的にサポートされていませんか?
この機能がCUDAに登場するかどうか誰かが知っていますか?
それが私のアドレス指定の失敗とsegfaultsの原因であることがわかって非常に驚きました...
編集
これは標準のC機能です。読み間違えて、誤って非標準だと言いました。
編集2
私はコンパイラのために「チョークアンドダイ」と言っていました。「ダイ」は間違いなく不適切な用語です。むしろ、nvcc
コンパイルを完了しますが、三項演算子ベースの割り当てを取り除き、ゼロに置き換えたようです。ものが適切なスポットに書き込まれていなかったため、これは後で戻ってきて私を噛みました。そして、それらのスポットは、ダブルインデックススキームのインデックスとして使用されました。インデックスはCPU側のラップアップ中に使用されたため、セグメンテーションフォールトはCPU側で発生しましたが、コンパイラのスニッピングによって駆動されていました。
コンパイラv4.1を使用していて、-O2
オンにしています。オプティマイザーは、このバグの原因である可能性がある三項演算内で使用される変数を最適化しているようです。
エラーが発生しやすい3項演算は、上記の例とほぼ同じですが、大規模な加算演算が含まれます。
以下のコメント投稿者のアドバイスに従い、NVIDIAにバグレポートを提出する予定ですが、この投稿は他の人への警告として残しています。
編集3
ここでは、常にゼロを生成する、わずかにサニタイズされた完全なステートメントを示します。
javascript - 文字インデックス チェックを使用した短縮形の if
省略形の if ステートメントを使用して、コンテンツにイタリック体のタグが含まれているかどうかを確認しています。
そのアラートがポップアップすると、次のように表示さ れます。
私は何を間違っていますか?
javascript - JavaScript 短縮構文
ステートメントが実行されるという省略形でこれをどのように書くことができるのか疑問に思っていました
これは機能していませんが、プラグインでこの種の構文を何度も目にします-変数がステートメントと混合されているなど..
この省略形の構文の適切な使用法について誰か説明してもらえますか? 最初のステートメントが true と評価された場合、2 番目のステートメントを「評価」ではなく「実行」したい!
私は最初の例が単純な方法であることを知っていました, これはより良いです, また、カンマを使用して、ステートメントを次々に文字列化します. この構文を学ぶ方法を知りたいです.
編集 最初の例をコードで && を使用するように変更したところ、うまくいきました。
ここ で別の詳細な説明も見つけました。
ありがとう、リチャード
php - ネストされた省略形
ショートハンドのifステートメントがわからないので少し問題があります
これは正常に機能しますが、そのステートメントで別のチェックを行いたいと思います。このような:
c# - この単純な if ステートメントが null を返す理由がわかりませんか?
または、if ステートメントが null を返さない場合 - なぜこの特定のプロパティを割り当てることができないのか。
例:
上記の行の直後にブレークポイントをヒット - 私は MyProperty を評価します - そしてそれは null です!?
MyMethod の戻り値をトリプル チェックしましたが、それは true です (戻り値の型はブール値です)。また、stringParam は MyMethod 内で更新されています。
上記の内容が不正確または間違っていると仮定すると、MyProperty は少なくとも String.Empty と等しくなければなりません。また、MyMethod が true であるが、文字列が更新されている場合、MyProperty は「何らかの文字列」に等しい必要があります。
なぜヌルなのですか?
MyClass 宣言では、アクセス修飾子に関する複雑さはありません。それは簡単です:
注: 命名などの点でコードを簡略化し、わずかに変更しましたが、このコードは私が持っているコードと構文的に同一です。
私が試したこと
私はこれのために構文を変えました、そして驚くべきことに(私にとって)それはうまくいきました!?
評価時に、myclass.MyProperty は期待される更新された stringParam と等しくなります。
理由の説明が欲しいです。out パラメーターに関して、インラインの if ステートメントの動作が異なる場合はありますか?