タグ付けされた質問 「conditional-operator」

条件演算子は、いくつかのプログラミング言語の基本的な条件式の構文の一部である三項演算子です。また、一般的に三項演算子またはインラインifとも呼ばれます。異なる言語では、同じ構成に対して異なる構文がありますが、すべて条件に基づいて2つのオプションのいずれかを選択します。

17
自分自身を繰り返さずに三項演算子(別名if)式を記述する方法
たとえば、次のようなもの: var value = someArray.indexOf(3) !== -1 ? someArray.indexOf(3) : 0 それを書くより良い方法はありますか?繰り返しますが、私は上記の正確な質問に対する答えを求めているのではなく、三項演算子式でオペランドを繰り返した可能性がある場合の例にすぎません...

9
ワンライナーif elseステートメントを行う方法は?
PHPで行うように、go(golang)で変数を代入する単純なif-elseステートメントを記述できますか?例えば: $var = ( $a > $b )? $a: $b; 現在、私は以下を使用する必要があります: var c int if a > b { c = a } else { c = b } 申し訳ありませんが、この制御ステートメントと、サイト内またはGoogle検索で情報が見つからなかった場合、名前を思い出せません。:/

17
条件付き?:(3項)演算子を使用する利点
標準のif-elseステートメントとは対照的に、?:演算子の利点と欠点は何ですか。明白なものは: 条件付き?:演算子 直接的な値の比較と割り当てを処理する場合、より簡潔で簡潔 if / elseコンストラクトほど柔軟ではないようです 標準のIf / Else より多くの状況に適用できます(関数呼び出しなど) 多くの場合、不必要に長い 読みやすさは、ステートメントによってそれぞれ異なります。最初に?:オペレーターに公開されてからしばらくの間、それがどのように機能するかを正確に説明するのに少し時間がかかりました。可能な限りそれを使用することをお勧めしますか、それとも私が多くの非プログラマーと作業しているのであれば、if / elseに固執することをお勧めしますか?


5
C#とJavaの三項演算子の違い(?:)
私はC#初心者ですが、問題が発生しました。三項演算子(? :)を扱う場合、C#とJavaには違いがあります。 次のコードセグメントで、4行目が機能しないのはなぜですか?コンパイラはのエラーメッセージを表示しますthere is no implicit conversion between 'int' and 'string'。5行目も機能しません。どちらListもオブジェクトですよね。 int two = 2; double six = 6.0; Write(two > six ? two : six); //param: double Write(two > six ? two : "6"); //param: not object Write(two > six ? new List<int>() : new List<string>()); //param: not object …

3
MySQLで三項条件演算子を実装する方法
MySQLに三項条件演算子を実装したいと思います。1つのフィールドIDが存在するテーブルがあります。その値はnullの可能性があります。次のidような3項条件形式で表示したい: select id = id == null ? 0 : id; MySQLで可能ですか?

12
Javaに条件演算子と条件演算子の複合代入バージョンがないのはなぜですか?(&& =、|| =)
だから、ブール型の二項演算子のために、Javaがあり&、|、^、&&と||。 ここで彼らが何をしているのかを簡単に要約しましょう: JLS 15.22.2ブール論理演算子&、^、および| JLS15.23条件付き-および演算子&& JLS15.24条件付きまたは演算子|| の場合&、結果値はtrue、両方のオペランド値がtrue;の場合です。それ以外の場合、結果はfalseです。 の場合|、結果値はfalse、両方のオペランド値がfalse;の場合です。それ以外の場合、結果はtrueです。 の場合^、結果値はtrue、オペランド値が異なる場合です。それ以外の場合、結果はfalseです。 &&オペレータは次のようである&が、その左側の値がオペランドその右側のオペランドた場合にのみ評価されますtrue。 ||オペレータは次のようである|が、その左側の値がオペランドその右側のオペランドた場合にのみ評価されますfalse。 現在、5つすべてのうち、3つには複合代入バージョン、つまり、、|=が&=あり^=ます。だから私の質問は明白です:なぜJavaは提供しません&&=と||=同様?必要以上に必要だ&=と思います|=。 そして、「長すぎるから」というのは良い答えではないと思います。Javaには>>>=。この省略にはもっと良い理由があるに違いありません。 15.26代入演算子から: 12個の代入演算子があります。[...]= *= /= %= += -= <<= >>= >>>= &= ^= |= &&=と||=が実装された場合、最初に右側を評価しないのはそれだけであるというコメントがありました。複合代入演算子が最初に右側を評価するというこの概念は間違いだと思います。 15.26.2複合代入演算子: フォームの複合代入式は、E1 op= E2と同等ですE1 = (T)((E1) op (E2))。ここTで、はのタイプですがE1、E1評価されるのは1回だけです。 証拠として、次のスニペットは、NullPointerExceptionではなく、をスローしArrayIndexOutOfBoundsExceptionます。 int[] a = null; int[] b = {}; a[0] += b[-1];

4
3項if-elseの自動開梱の必要性
このコードは正常に動作します:- Integer nullInt = null; if (1 <= 3) { Integer secondNull = nullInt; } else { Integer secondNull = -1; } System.out.println("done"); しかし、これはnullポインター例外をスローしますが、Eclipseは自動アンボックス化の必要があることを警告します:- Integer nullInt = null; Integer secondNull = 1 <= 3 ? nullInt : -1; System.out.println("done"); なぜそうなのですか、誰かが案内してくれますか?

5
ラムダのC ++三項割り当て
次のスニペットがコンパイルされない理由は何ですか?「エラー:オペランドの?:タイプが異なります」というエラーが表示されます。 auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;

1
値を割り当てるときの奇妙なJavaの3値の動作。これが起こるためにJavaは舞台裏で何をしていますか?
数日前、私は、Javaが次のことをどのように、またはなぜ可能にするのかについてのドキュメントを見つけることができなかった興味深いシナリオに遭遇しました。(このスニペットは、バグを単純化したものです。) @Test public void test() { boolean bool = false; Integer intVal = Integer.valueOf(5); Long longVal = null; Long result = bool ? intVal : longVal; System.out.println(" > " + result); } 上記のスニペットで: bool = trueの場合、値は「5」になります。 しかし、bool = falseの場合、3項演算を評価しようとすると、nullポインタ例外が発生します。印刷ステートメントではありません。 これを修正するには、「結果」を次のように変更します Long result = bool ? Long.valueOf(intVal) : longVal; これを行うと、私が必要とする期待される動作が得られます: bool …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.