問題タブ [ternary-operator]
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.
c# - C# の三項演算子の結合性 - 信頼できますか?
ああ、あなたはちょうど良い三次虐待が好きではありませんか?:) 次の式を検討してください。
今、完全に当惑している人のために、これはtrueと評価されると言えます。つまり、これは次と同等です。
しかし、これは信頼できますか?状況によっては、これにならないことを確信できますか:
何人かは言うかもしれません -まあ、括弧を追加するか、丸括弧を使わないでください - 結局のところ、三項演算子が悪であることはよく知られている事実です!
確かにそうですが、実際に意味を成す状況がいくつかあります。好奇心旺盛な人のために - 私は一連のプロパティによって 2 つのオブジェクトを比較するコードを書いています。次のように冷静に書くと、かなりいいでしょう。
明確かつ簡潔。ただし、最初のケースのように機能する三項演算子の結合性に依存します。括弧はそれからスパゲッティを作るだけです.
それで - これはどこかに指定されていますか?私はそれを見つけることができませんでした。
java - 三項演算子を使用して配列を初期化する
私はこのようなことを試しました:
しかし、このコードはコンパイルさえしません。これについて何か説明はありますか?は funkyBoolean ? {1,2,3} : {4,5,6}
有効な表現ではありませんか? 前もって感謝します!
java - 4 つの式で三項演算子を使用する
これは受け入れられるコーディング方法ですか?
それともクラシックの方がいいのでしょうか...
php - PHP に短い if ステートメントはありますか?
これをどうにか短く書き直すことはできますか?
どこかで見たことあるのに忘れちゃった(/_;)
ところで、必要に応じてコードも説明してください!
ありがとう
php - PHP のこの構文 ( page = $page ? $page : 'default' ) はどういう意味ですか?
私はPHPが初めてです。WordPressでこの構文に出会いました。そのコードの最後の行は何をしますか?
php - ?: PHP 5.3 とは?
http://twitto.org/より
Twitto は、PHP 5.3 以降で利用可能ないくつかの新機能を使用します。
- DIR定数_
- オペレーター
- 無名関数
PHP 5.3の?:で番号 2 は何をしますか?
また、匿名関数とはどういう意味ですか? それは昔からあるものではありませんか?
c# - C# で三項演算子を作成できますか?
a < b && b < c である a < b < c の三項演算子を作成したいと思います。または、思いつく他のオプション a < b > c など... 私は自分のショートフォームのファンであり、高校でプログラミングを学んだときから、それを作成したいと思っていました。
どのように?
java - java三項ハック
ですから、ここでは保守性や優雅さを追求するつもりはありません。楽しみのためだけに、メソッドの合計トークンを削減する方法を探しています。このメソッドは、ネストされた長いif-else構造で構成されており、(私が思うに)最も少ないトークンでそれを行う方法は三項演算子であることがわかりました。基本的に、私はこれを翻訳します:
これに:
ただし、値を返すだけでなく、フィールドを変更したり、メソッドを呼び出したりする場合もあります。例えば、
これをトークンごとに行う最も安価な方法は何でしょうか?私が今していることは醜いですが、あまり多くのトークンを無駄にしません(ここではフィールドは文字列です):
繰り返しになりますが、要点は適切なコーディングではありません。トークン数を減らすためのハックを探しています。全体を書くためのより短い方法があれば、私もそれを受け入れます。提案をありがとう。
編集:各単語と句読点は1つのトークンとしてカウントされます。したがって、たとえば、「instanceOf String」は2つのトークンですが、「!=null」は3つです。改善の可能性について私が見ることができる主なものは、「&&」と括弧です。条件以外の場所に「field=value」を配置する方法はありますか?そうでない場合は、「field = value」を括弧なしでブール値にする構造がありますか?
java - Java バイトコード iconst_0 iadd シーケンス
三項演算子を使った楽しいテストを次に示します。
生成されるバイトコードは次のとおりです。
「+ 0」の「else」ケースが削除されていないことに少し驚きました。私はこれをもっと期待していました:
だからここに私の質問があります:仕様は以下を義務付けていますか?
三項演算子を使用したためのシーケンスですか、それともこれは単なるコンパイラの問題ですか?
明らかに、この質問は 'r += ... ? と書くことの関連性に関するものではありません。1:0'. しかし、ここでは最適化を行っていないのに、他のケースではコンパイラがかなりの最適化を行っているので、私は驚いています。
オプション 2 を生成する Java コンパイラは、依然として有効な Java コンパイラでしょうか (例を台無しにしませんでしたが、重要なのは、生成されたコードに不要な 0 の追加と不要な goto がある場合、コンパイラはこれを削除しますか?有効な .java コンパイラである必要があります)?
vb.net - VB.NETの「If」演算子はボクシングを引き起こしますか?
VB/VB.NET で作業したことのある私たちは、この忌まわしいコードに似たコードを見てきました。
私が「忌み嫌う」と言うのは、次の 3 つの単純な理由からです。
IIf
すべてのパラメーターが評価されるfunctionです。したがってobj
、上記の呼び出しで が何もない場合は、 aNullReferenceException
がスローされます。これは、C# などの言語で短絡三項演算子に慣れている人にとっては予期しない動作です。- は関数であるため
IIf
、関数呼び出しのオーバーヘッドが発生します。繰り返しますが、これは大したことではありませんが、言語固有の 3 項演算として動作することを期待する人にとっては、正しくないと感じます。 IIf
は非ジェネリックであるため、 type のパラメーターを受け入れますObject
。つまり、次の呼び出しボックス (私は信じています) は合計 3 つの整数を意味します。' boxes 2nd and 3rd arguments as well as return value '
Dim value As Integer = IIf(condition, 1, -1)
現在、VB.NET の最近のバージョン (数字が何かはわかりません) では、If
演算子が導入されました。これは、関数とまったく同じようにIIf
機能しますが、(私が理解しているように) 同じ欠点はありません。つまり、短絡を提供し、本質的な VB 操作です。ただし、最後の部分についてはよくわかりません。MSDNのドキュメントにはIf
、その引数をボックス化するかどうかが示されていないようです。誰か知っていますか?