問題タブ [conditional-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.

0 投票する
3 に答える
522 参照

functional-programming - 関数型言語で、zipまたはzipWithスタイルの関数で使用する要素を条件付きで選択するにはどうすればよいですか?

私はzipWith2つのシーケンスの対​​応する要素を操作する標準関数に精通していますが、関数型言語(またはいくつかの関数型機能を備えた言語)では、に基づいて、圧縮する要素のペアを条件付きで選択する最も簡潔な方法は何ですか? 3番目のシーケンス?

この好奇心は、Excelでいくつかのことをスクラッチしているときに発生しました。
A1:A10、B1:B10、C1:C10、D1、E1、F1の数字で、次のような式を使用しています。

IFステートメントの乗算の各半分は、ブール値の配列を生成し、それらは一緒に乗算(AND)されます。これらのブール値は、10個の商のどれが最終的に平均化されるかを制御するため、10個の個別のIFステートメントが評価されているかのようになります。

たとえば、A1:A10の10個の値の2番目と3番目だけが条件(> =D1と<=E1の両方)を満たす場合、式は次のように評価されます。

AVERAGE関数はたまたまブール値とテキスト値を無視するため、2番目と3番目の商の平均を取得するだけです。

これはHaskellで簡潔に行うことができますか?Erlang?LINQまたはF#?Python?等..

この特定の例では、上記の式が完全に正しいわけではないことに注意してください。基本的なポイントを理解するために省略されています。A1:A10の10個の要素のいずれも条件を満たさない場合、10個のFALSE値がAVERAGEに渡され、誤って0と評価され
ます。式は次のように記述する必要があります。

NA()がエラーを生成し、平均が未定義であることを示します 。

アップデート:

答えてくれてありがとう。最初のリストの対応する要素が特定の基準を満たしている場合に、2番目と3番目のリストの要素のペアに関数を適用するという点で、最初の質問は非常に簡単であることに気付きました。そのためのノーマン・ラムゼーの答えを受け入れました。

しかし、次に行ったのは、任意の数のリストからの対応する要素を表すタプルに関数を適用できるかどうか疑問でした。したがって、の制限についてLebertramに質問しましたzipWithN

適用可能なファンクターに関するApocalispの情報から、Pythonによる引数リストの解凍(任意の数の引数に関数を適用する)に関する情報が得られました。

上記の特定の例では、リストの要素の商を平均すると(numsリストのリストはここにあります)、Pythonは次のように実行できるように見えます。

より一般的には、関数fと述語p(およびavg)を使用すると、これは次のようになります。

0 投票する
15 に答える
11558 参照

c# - 判読可能かどうか: C# 複数の三項演算子 + 一致しない場合はスロー

次の C# コードは判読できますか?

ここで、Throw は次のように定義されます。

私はそれが慣用的な C# ではないことを知っています。しかし、あなたはそれを一目で、あるいは二度目で理解できますか?それとも、私はあまりにも遠くに迷いましたか?

0 投票する
11 に答える
17448 参照

java - Javaに条件付き演算子と条件付き演算子の複合代入バージョンがないのはなぜですか?(&& =、|| =)

したがって、ブール値の二項演算子の場合、Javaには、、、、および&があります。|^&&||

ここで彼らが何をしているのかを簡単に要約しましょう:

の場合&、結果の値は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で、はのタイプですが、 1回だけ評価されるE1点が異なります。E1

NullPointerException証拠として、次のスニペットは、ではなく、をスローしArrayIndexOutOfBoundsExceptionます。

0 投票する
2 に答える
228 参照

c# - C#で条件演算子が常にintを返すのはなぜですか?

重複の可能性:
条件付き演算子は暗黙的にキャストできませんか?

条件演算子を使用してステートメントを記述する場合、いずれかの式が数値である場合、それらは常にint型として解釈されます。shortこれにより、この演算子を使用して変数を割り当てるためにキャストが必要になります。

shortコンパイラーは、典型的な代入ステートメント ( ) の場合と同様に、両方の値が有効な値であることを認識できるべきではありませんshort shortVal = 1;か?

0 投票する
7 に答える
1499 参照

c# - C# 条件演算子を使用したコンパイラ エラー

Google で必要なものが見つからないようです。ここですぐに回答が得られるはずです。

それ ?: 構文は私には正しいようです。ただし、コンパイルエラーが発生します。

Program.cs(13,28):
エラー CS1002: ; Program.cs
(13,28):
エラー CS1525: 無効な式の用語 ':'
Program.cs(13,30):
エラー CS1002: ; 期待される

csharp 構文についてはわかりませんが、cpp に組み込まれています。助けてください!ありがとう!

更新: 約 10 人が正解です (笑) ので、最初に提出した人に賞を与えます。

興味深い構文であり、実際には c++ 構文よりも好きだと思います。

私がこれを行っていた実際のコードは次のとおりです。

0 投票する
6 に答える
4211 参照

c# - 条件演算子がnull許容型への代入に「null」の使用を正しく許可しないのはなぜですか?

重複の可能性:
Null許容型と三項演算子。なぜこれが機能しないのですか?
nullable <value>型を使用した条件付き演算子の割り当て?

これはコンパイルされず、「'System.DateTime'と''の間に暗黙の変換がないため、条件式のタイプを判別できません」と述べています。

これは問題なく動作します

0 投票する
7 に答える
1096 参照

c++ - 条件演算子に関するインタビューの質問

最近、次の質問に遭遇しました。この表現を減らす方法: s>73?61:60; .

与えられたヒントは、条件演算子を使用する代わりに、正常に機能する単純な比較を使用できるということでした

よくわかりませんが、GCC拡張機能で可能だと思いますが、自分で理解することはできません。

EDIT:式全体はこれです:s-=s>73?61:60

0 投票する
9 に答える
3252 参照

c# - C# 条件演算子はステートメントではありませんか?

イライラする単純な小さなコードフラグメントがあります。

コンパイル時に、次のエラーが生成されます。

代入、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみをステートメントとして使用できます

HashSet.Addbool を返すように文書化されているため、三項 (?) 演算子が機能するはずです。これは、ハッシュ セットに追加する一意のアイテムと重複するアイテムの数を追跡するための完全に正当な方法のように見えます。

if-then-else として再フォーマットすると、正常に動作します。

誰でもエラーを説明できますか?単純な三項演算子としてこれを行う方法がある場合は?

0 投票する
13 に答える
366981 参照

objective-c - Objective-C のクエスチョン マークとコロン (?: 三項演算子) は何を意味しますか?

このコード行はどういう意味ですか?

と私?:混乱させます。