問題タブ [control-flow]

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 投票する
2 に答える
259 参照

scala - カリー化機能のある奇妙なもの

私には理解できないこの奇妙な状況があります。「ProgramminginScala」の本、Ch。9.9。

私がカリー化された関数を持っているとしましょう:

特別なカーリー構文内で1つの引数を使用して呼び出すと、期待どおりに機能します。

ただし、2つのステートメントを入力すると、奇妙なことがわかります。

どうして「こんにちは!」「Before」の前に印刷され、次に「5」が内部に印刷されますか?私は夢中ですか?

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

objective-c - forループの反復を一時停止して、ユーザー入力を待機します

forオブジェクトの配列を反復処理するループを作成しました。IBAction今、私は、ユーザーが?を呼び出すボタンをクリックするまで、ループの反復を中断することが可能かどうかを自問しています。

0 投票する
5 に答える
1846 参照

python - Python コードでのコードの重複を避ける

次の Python スニペットを検討してください。

ここで、Kisのケースを処理したいとNoneします。そのため、書き込みはファイルの最後まで続きます。私は現在やっています

コードを複製しているため、これは明らかにこれを処理する最善の方法ではありません。これを処理できる統合された方法はありますか? が存在しないif/break場合にのみコードが存在するようにするのが自然なことですが、これには Lisp マクロのようにオンザフライで構文を書くことが含まれますが、これは Python では実際にはできません。明確にするために、私は特定のケース (部分的に単純にするために選択した) については心配していません。KNone

更新: 人々が投稿した回答を読み、さらに実験を行った後、いくつかのコメントがあります。

上記のように、私は一般化できる一般的な手法を探していました.@Paulの答え、つまりtakewhilefromを使用するのiterroolsが最適だと思います。おまけとして、上記の単純な方法よりもはるかに高速です。理由はわかりません。itertools何度か見たことはありますが、あまり詳しくありません。私の観点からすると、これはFor The Win !の関数型プログラミングのケースです。(面白いことに、 の作成者は、 のitertoolsドロップについてフィードバックを求めたことがあります。 http://mail.python.org/pipermail/python-list/2007-December/522529.htmltakewhileで始まるスレッドを参照してください。) 上記の状況を単純化したところ、実際の状況はもう少し厄介です。ループ内の 2 つの異なるファイルに書き込んでいます。したがって、コードは次のようになります。

私の投稿された例を考えると、@Jeff は合理的に、 is の場合はファイルをコピーすることを提案しましKNone。実際にはとにかくループしているので、そうするのはそれほど明確な選択ではありません。ただし、takewhileこの場合は簡単に一般化できます。ここでは言及していない別のユースケースもtakewhileあり、そこでも使用できてよかったです。2番目の例は次のようになります(逐語的に)

ここで条件を使用できました

@Paulの元の例ごと。iただし、コードは機能しますが、外側のスコープから取得しているという事実に完全に満足しているわけではありません。これを行うより良い方法はありますか?または、別の質問にする必要があるかもしれません。とにかく、私の質問に答えてくれたみんなに感謝します。いくつかの素晴らしい提案をしてくれた@Jeffへの名誉ある言及。

0 投票する
4 に答える
304 参照

python - Python code redux でのコード重複の回避

これは以前の質問のフォローアップです。良い提案を頂けたので、また頑張ってみようと思いました。

このコードをコンパクトにすることは可能ですか? このように 2 つのループに共通点がある場合、1 つの明白な可能性は、共通のコードを除外することですが、ここでは、えーと。厄介なことに、ここでの唯一の違いは への書き込みcです。

コードの簡単な要約:Kが None でない場合は、Kの行をループして と の両方にa書き込みます。それ以外の場合は、 のすべてをループして、に書き込むだけです。bcab

0 投票する
5 に答える
685 参照

java - これは `try..catch..finally` 冗長ですか?

これは、catch 句を省略した場合とは異なる動作をしますか?


[編集] 混乱を解消するために、はい、catchブロックは例外を再スローする以外は何もしません。これにより、ブロックが呼び出されたときに何らかの異なる順序が発生したかどうか疑問に思っていましたがfinally(スローされた例外が呼び出し元によってキャッチされたと仮定します)、これまでの回答から推測すると、そうではありません。

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

language-agnostic - COMEROM 制御フロー

ウィキペディアによると、COMEFROM フロー制御は冗談、判読不能、またはまったく有害であると見なされています。このような機能は、AOP シナリオ (つまり、ロガー呼び出しをメソッドに追加せずにメソッドにロガーを追加する) で非常に役立つと思います。

そのような制御構造が非自明であることのマイナス面は、潜在的な有用性を上回っていますか? 他に考慮すべき欠点はありますか?

このため、この質問をするように促されました。

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

r - Rにネストされたifを使用して一連の基準を評価する-より良い方法はありますか?

私の仕事の多くは、結核の診断検査を中心に展開しています。ご想像のとおり、これらのテストの出力をすばやく評価および検証できると便利です。ここで、まさにそれを実行する関数を作成しました(わかりやすくするために簡略化)。つまり、テストから数値結果を取得し、メーカー指定の解釈を生成します。

この関数は私にとってはうまく機能します-私は何千ものテストに対してそれを検証しました、そしてそれは私がそれに投げるどんなものに対しても十分に速いです。それといくつかの同様の機能をパッケージにまとめて広く使用できるようにしたいのですが、そうする前にフィードバックを受け取りたいと思います。

  1. この関数は、ネストされたif-else関数にラップされた大きなforループに依存しています。それは特にエレガントではなく、恐ろしいことはfor()間違いなく私の信頼性を損なうものですが、それは機能します。これに対するより良いアプローチはありますか?もしそうなら、機能するコードを書き直すことを保証するのは十分に良いですか?

  2. 上記の関数の基準は、北米でのテストの解釈に関するものです。世界の他の地域は、わずかに異なる基準に従います。それらも利用できるようにしたいと思います。それぞれに個別の非エクスポート関数を用意することを検討しています。さまざまなデータチェック(上記の要点から除外)は引き続きメイン関数に存在し、メイン関数は指定されたサブ関数を呼び出します。それは合理的に聞こえますか?

  3. 他に何か提案やアドバイスはありますか?スタイル、コード編成-何でも。

たぶんこの赤ちゃんの鳥を巣から押し出すべきだと思いますが、私はほとんど真空で働いているので少し緊張しています。アドバイスをいただければ幸いです。

編集:要点へのリンクを見逃した場合、これは私が話している関数です


要求に応じて、サンプルテストデータ

0 投票する
1 に答える
489 参照

android - (GPSを介して)ユーザーの位置を1回だけ修正するための正しい制御フローは何ですか?

1回限りのタスクとしてユーザーの場所を修正する「正しい」方法を探しています。現時点では、私の実行フローは大まかに次のとおりです。

  1. ユーザーがボタンを押します。
  2. ハンドラー(メインのアクティビティコードに含まれています)は、GPSロケーションリスナーをシステムに登録し、可能な限り高速に更新するように設定し、ASyncTaskを起動して終了します。
  3. 実行前に、ASyncTaskはProgressDialogを生成し、他のUIの使用を効果的にブロックします。
  4. バックグラウンドタスクの場合、ASyncTaskはタイムアウトまたはGPSの位置修正を待機します。
  5. 実行後、ASyncTaskは、場所が見つかった場合は関連データをユーザーに表示するか、見つからなかった場合はトーストにエラーを表示します。もちろん、リスナーの登録も解除します。

さて、これは機能しますが、多くの欠点があります。まず、そして明らかに、リクエストが行われている間、アプリとの他のすべてのUIインタラクションがブロックされます。アプリの主な機能はこのタスクを実行することであり、動作中に他に行うことはほとんどないため、これは現在それほど悪くはありません。また、ユーザーがボタンをスパムするのを防ぎます。さらに、ASyncTaskの実行後のフェーズが、実際にロケーション検出ロジックを配置する場所であるかどうかはわかりません(インターネット呼び出しを行います。これは、ASyncTask内で行う方がよい場合がありますか?)。ただし、場所が見つかったという事実と、メインスレッドが何かを実行する必要があるという事実を他にどのように返すかはわかりません。

私は誰かがこれを行うための「正しい」方法について私に知らせてくれることを望んでいました-つまり、このような正しいASyncTaskを使用していて、サービスが関係している場合、そしてインターネット呼び出しの場所後の検索にどのように対処する必要がありますか? )、そしておそらく、いくらか「ブロッキング」呼び出しを行わなければならないアプリの制御フローを一般的にどのように処理するかについて、いくつかの賢明な言葉を与えることさえあります。

必要に応じてコードを提供できますが、最小限の解決策に切り詰めるには少し時間がかかる場合があります。

0 投票する
4 に答える
2054 参照

scala - Scala の「if … else」はライブラリ関数として実装できたのでしょうか?

で行われているのと同様の方法で、特別なコンパイラ処理で にif … else実装できたのではないかと思っています。定義は にあり、実装はコンパイラによって埋められます。PredefclassOf[A]Predef

確かに、コンテキストに関係なく、は常にであり、はif常にであると知っていると安心する人が多いでしょう。ただし、結果の型のメソッドとして定義すると、キーワードのリストから削除され、ライブラリ設計者が独自のメソッドを定義できるようになります。(バックティックを使用して任意のキーワードを識別子として使用できることは知っていますが、コードではひどいように見えます。)このような方法は、メーリングリストで議論されているこのような状況で議論する場合に役立ちます。実際に名前を付ける必要があるメソッドを定義するときに使用します。( SO hereおよびhereについても説明されていますifelseelseelseifelse`else`otherwiseelse.)

そう:

  • そのようなアプローチは理論上でも可能でしょうか? それとも、Scala の基本的な原則を破りますか?
  • 欠点は何ですか?
0 投票する
2 に答える
303 参照

python - ifステートメントを追加するPython cmdインタープリター

私のプロジェクトの 1 つで、python cmdクラスを中心に構築された python プログラムがあります。これにより、データベースに送信する sql ステートメントに関するミニ言語を作成することができました。Python との接続がはるかに簡単になるだけでなく、SQL ではできないことを実行できます。これは、いくつかのプロジェクトにとって非常に重要でした。ただし、制御フローを大きくするために if ブロックを追加する必要があります。

私の現在の考えでは、IF と END という 2 つの新しいコマンドを言語に追加するだけです。これらは、行をスキップするかどうかを決定する変数を設定します。他の誰かが cmd モジュールでこれを行ったかどうかを知りたいのですが、もしそうなら、私が見逃している標準的な方法はありますか? Google は何も明らかにしていないようで、cmd ドキュメントも何も明らかにしていません。

私がやっていることと同様のアイデアについては、ここにアクセスしてください。質問とコメントを歓迎します。:)

うーん、私が考えていたよりも少し複雑ですが、Python 構文があればいいのですが。ミニ言語の構築については、最終的に実現するまでかなり長い間議論しました。この問題は、主に外部の制限から生じます。SQLに変換するための「データ」がたくさんあります。これは寛大です。これは、通過しない他の「データ」に基づいています。また、問題の特定の「バージョン」ごとに固有です。sql に対して直接データを処理することは、私の最初の傾向でしたが、実際的ではありませんでした。

好奇心旺盛な方のために、私はかなりの時間を費やして、UNIX プログラミングの芸術におけるミニ言語の章を調べました (ここにあります) 。

純粋な python で構築していたら、問題セットに絶対に必要な柔軟性がなかったでしょう。