問題タブ [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.
scala - カリー化機能のある奇妙なもの
私には理解できないこの奇妙な状況があります。「ProgramminginScala」の本、Ch。9.9。
私がカリー化された関数を持っているとしましょう:
特別なカーリー構文内で1つの引数を使用して呼び出すと、期待どおりに機能します。
ただし、2つのステートメントを入力すると、奇妙なことがわかります。
どうして「こんにちは!」「Before」の前に印刷され、次に「5」が内部に印刷されますか?私は夢中ですか?
objective-c - forループの反復を一時停止して、ユーザー入力を待機します
for
オブジェクトの配列を反復処理するループを作成しました。IBAction
今、私は、ユーザーが?を呼び出すボタンをクリックするまで、ループの反復を中断することが可能かどうかを自問しています。
python - Python コードでのコードの重複を避ける
次の Python スニペットを検討してください。
ここで、K
isのケースを処理したいとNone
します。そのため、書き込みはファイルの最後まで続きます。私は現在やっています
コードを複製しているため、これは明らかにこれを処理する最善の方法ではありません。これを処理できる統合された方法はありますか? が存在しないif/break
場合にのみコードが存在するようにするのが自然なことですが、これには Lisp マクロのようにオンザフライで構文を書くことが含まれますが、これは Python では実際にはできません。明確にするために、私は特定のケース (部分的に単純にするために選択した) については心配していません。K
None
更新: 人々が投稿した回答を読み、さらに実験を行った後、いくつかのコメントがあります。
上記のように、私は一般化できる一般的な手法を探していました.@Paulの答え、つまりtakewhile
fromを使用するのiterrools
が最適だと思います。おまけとして、上記の単純な方法よりもはるかに高速です。理由はわかりません。itertools
何度か見たことはありますが、あまり詳しくありません。私の観点からすると、これはFor The Win !の関数型プログラミングのケースです。(面白いことに、 の作成者は、 のitertools
ドロップについてフィードバックを求めたことがあります。 http://mail.python.org/pipermail/python-list/2007-December/522529.htmltakewhile
で始まるスレッドを参照してください。) 上記の状況を単純化したところ、実際の状況はもう少し厄介です。ループ内の 2 つの異なるファイルに書き込んでいます。したがって、コードは次のようになります。
私の投稿された例を考えると、@Jeff は合理的に、 is の場合はファイルをコピーすることを提案しましK
たNone
。実際にはとにかくループしているので、そうするのはそれほど明確な選択ではありません。ただし、takewhile
この場合は簡単に一般化できます。ここでは言及していない別のユースケースもtakewhile
あり、そこでも使用できてよかったです。2番目の例は次のようになります(逐語的に)
ここで条件を使用できました
@Paulの元の例ごと。i
ただし、コードは機能しますが、外側のスコープから取得しているという事実に完全に満足しているわけではありません。これを行うより良い方法はありますか?または、別の質問にする必要があるかもしれません。とにかく、私の質問に答えてくれたみんなに感謝します。いくつかの素晴らしい提案をしてくれた@Jeffへの名誉ある言及。
python - Python code redux でのコード重複の回避
これは以前の質問のフォローアップです。良い提案を頂けたので、また頑張ってみようと思いました。
このコードをコンパクトにすることは可能ですか? このように 2 つのループに共通点がある場合、1 つの明白な可能性は、共通のコードを除外することですが、ここでは、えーと。厄介なことに、ここでの唯一の違いは への書き込みc
です。
コードの簡単な要約:K
が None でない場合は、K
の行をループして と の両方にa
書き込みます。それ以外の場合は、 のすべてをループして、に書き込むだけです。b
c
a
b
java - これは `try..catch..finally` 冗長ですか?
これは、catch 句を省略した場合とは異なる動作をしますか?
[編集] 混乱を解消するために、はい、catch
ブロックは例外を再スローする以外は何もしません。これにより、ブロックが呼び出されたときに何らかの異なる順序が発生したかどうか疑問に思っていましたがfinally
(スローされた例外が呼び出し元によってキャッチされたと仮定します)、これまでの回答から推測すると、そうではありません。
r - Rにネストされたifを使用して一連の基準を評価する-より良い方法はありますか?
私の仕事の多くは、結核の診断検査を中心に展開しています。ご想像のとおり、これらのテストの出力をすばやく評価および検証できると便利です。ここで、まさにそれを実行する関数を作成しました(わかりやすくするために簡略化)。つまり、テストから数値結果を取得し、メーカー指定の解釈を生成します。
この関数は私にとってはうまく機能します-私は何千ものテストに対してそれを検証しました、そしてそれは私がそれに投げるどんなものに対しても十分に速いです。それといくつかの同様の機能をパッケージにまとめて広く使用できるようにしたいのですが、そうする前にフィードバックを受け取りたいと思います。
この関数は、ネストされたif-else関数にラップされた大きなforループに依存しています。それは特にエレガントではなく、恐ろしいことは
for()
間違いなく私の信頼性を損なうものですが、それは機能します。これに対するより良いアプローチはありますか?もしそうなら、機能するコードを書き直すことを保証するのは十分に良いですか?上記の関数の基準は、北米でのテストの解釈に関するものです。世界の他の地域は、わずかに異なる基準に従います。それらも利用できるようにしたいと思います。それぞれに個別の非エクスポート関数を用意することを検討しています。さまざまなデータチェック(上記の要点から除外)は引き続きメイン関数に存在し、メイン関数は指定されたサブ関数を呼び出します。それは合理的に聞こえますか?
他に何か提案やアドバイスはありますか?スタイル、コード編成-何でも。
たぶんこの赤ちゃんの鳥を巣から押し出すべきだと思いますが、私はほとんど真空で働いているので少し緊張しています。アドバイスをいただければ幸いです。
編集:要点へのリンクを見逃した場合、これは私が話している関数です。
要求に応じて、サンプルテストデータ。
android - (GPSを介して)ユーザーの位置を1回だけ修正するための正しい制御フローは何ですか?
1回限りのタスクとしてユーザーの場所を修正する「正しい」方法を探しています。現時点では、私の実行フローは大まかに次のとおりです。
- ユーザーがボタンを押します。
- ハンドラー(メインのアクティビティコードに含まれています)は、GPSロケーションリスナーをシステムに登録し、可能な限り高速に更新するように設定し、ASyncTaskを起動して終了します。
- 実行前に、ASyncTaskはProgressDialogを生成し、他のUIの使用を効果的にブロックします。
- バックグラウンドタスクの場合、ASyncTaskはタイムアウトまたはGPSの位置修正を待機します。
- 実行後、ASyncTaskは、場所が見つかった場合は関連データをユーザーに表示するか、見つからなかった場合はトーストにエラーを表示します。もちろん、リスナーの登録も解除します。
さて、これは機能しますが、多くの欠点があります。まず、そして明らかに、リクエストが行われている間、アプリとの他のすべてのUIインタラクションがブロックされます。アプリの主な機能はこのタスクを実行することであり、動作中に他に行うことはほとんどないため、これは現在それほど悪くはありません。また、ユーザーがボタンをスパムするのを防ぎます。さらに、ASyncTaskの実行後のフェーズが、実際にロケーション検出ロジックを配置する場所であるかどうかはわかりません(インターネット呼び出しを行います。これは、ASyncTask内で行う方がよい場合がありますか?)。ただし、場所が見つかったという事実と、メインスレッドが何かを実行する必要があるという事実を他にどのように返すかはわかりません。
私は誰かがこれを行うための「正しい」方法について私に知らせてくれることを望んでいました-つまり、このような正しいASyncTaskを使用していて、サービスが関係している場合、そしてインターネット呼び出しの場所後の検索にどのように対処する必要がありますか? )、そしておそらく、いくらか「ブロッキング」呼び出しを行わなければならないアプリの制御フローを一般的にどのように処理するかについて、いくつかの賢明な言葉を与えることさえあります。
必要に応じてコードを提供できますが、最小限の解決策に切り詰めるには少し時間がかかる場合があります。
scala - Scala の「if … else」はライブラリ関数として実装できたのでしょうか?
で行われているのと同様の方法で、特別なコンパイラ処理で にif … else
実装できたのではないかと思っています。定義は にあり、実装はコンパイラによって埋められます。Predef
classOf[A]
Predef
確かに、コンテキストに関係なく、は常にであり、はif
常にであると知っていると安心する人が多いでしょう。ただし、結果の型のメソッドとして定義すると、キーワードのリストから削除され、ライブラリ設計者が独自のメソッドを定義できるようになります。(バックティックを使用して任意のキーワードを識別子として使用できることは知っていますが、コードではひどいように見えます。)このような方法は、メーリングリストで議論されているこのような状況で議論する場合に役立ちます。実際に名前を付ける必要があるメソッドを定義するときに使用します。( SO hereおよびhereについても説明されていますif
else
else
else
if
else
`else`
otherwise
else
.)
そう:
- そのようなアプローチは理論上でも可能でしょうか? それとも、Scala の基本的な原則を破りますか?
- 欠点は何ですか?
python - ifステートメントを追加するPython cmdインタープリター
私のプロジェクトの 1 つで、python cmdクラスを中心に構築された python プログラムがあります。これにより、データベースに送信する sql ステートメントに関するミニ言語を作成することができました。Python との接続がはるかに簡単になるだけでなく、SQL ではできないことを実行できます。これは、いくつかのプロジェクトにとって非常に重要でした。ただし、制御フローを大きくするために if ブロックを追加する必要があります。
私の現在の考えでは、IF と END という 2 つの新しいコマンドを言語に追加するだけです。これらは、行をスキップするかどうかを決定する変数を設定します。他の誰かが cmd モジュールでこれを行ったかどうかを知りたいのですが、もしそうなら、私が見逃している標準的な方法はありますか? Google は何も明らかにしていないようで、cmd ドキュメントも何も明らかにしていません。
私がやっていることと同様のアイデアについては、ここにアクセスしてください。質問とコメントを歓迎します。:)
うーん、私が考えていたよりも少し複雑ですが、Python 構文があればいいのですが。ミニ言語の構築については、最終的に実現するまでかなり長い間議論しました。この問題は、主に外部の制限から生じます。SQLに変換するための「データ」がたくさんあります。これは寛大です。これは、通過しない他の「データ」に基づいています。また、問題の特定の「バージョン」ごとに固有です。sql に対して直接データを処理することは、私の最初の傾向でしたが、実際的ではありませんでした。
好奇心旺盛な方のために、私はかなりの時間を費やして、UNIX プログラミングの芸術におけるミニ言語の章を調べました (ここにあります) 。
純粋な python で構築していたら、問題セットに絶対に必要な柔軟性がなかったでしょう。