問題タブ [with-statement]

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

python - 「with」ブロックで障害が発生したにもかかわらず、ファイルのコンテンツを操作する

必要なことを行うために Python でユーティリティを作成しました (関係ありませんが、社内 DSL 用の ctags 互換タグ ファイルを生成するためのものです)。

とにかく、私はステートメントのコンテキストでファイルを開いて読んでいますが、with興味があります.人々はそのプロセスの失敗をどのように処理する傾向がありますか?

私の解決策は

ファイルを閉じて処理するのが好きなので、一致チェックを with ステートメントの外に置きました。ただし、contentビルドされない場合、これは失敗します。

私の解決策は、contentこのコードのすぐ上にある空の文字列に初期化することでしたが、私が感じたのは、関数を終了させたいということです。関数などから例外がスローされます。

この場合、残りの関数をwithブロックに入れることもできますが、それによって開いているファイルの範囲が広がります。障害に照らして存在するように、ブロックcontentの前に作成できます。with私は興味がありますが、人々が見たいと思う他の解決策は何ですか (そもそも質問に意味があると仮定して)?

私は次のようなものが好きだと思います:

それが一般的なコンセンサスである場合、私はそれに対処し、残りの機能のためにファイルを開いたままにしておく必要があるという考えを受け入れます。:)

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

python - Pythonのカスタムクラスで「with object() as f」の使用を実装する

Python でファイルのようなオブジェクト (/dev/ を介したシリアル接続) を開き、それを閉じる必要があります。これは、私のクラスのいくつかのメソッドで数回行われます。私がやっていた方法は、コンストラクタでファイルを開き、デストラクタでファイルを閉じることでした。私は奇妙なエラーが発生していますが、それはガベージコレクターなどに関係していると思います.オブジェクトがいつ削除されているのか正確にわからないことにまだ慣れていません=\

私がこれを行っていた理由はtcsetattr、それを開くたびにたくさんのパラメーターを使用する必要があり、そのすべてをあちこちで行うのが面倒だからです。だから私はそれをすべて処理するために内部クラスを実装したいので、それを使用することができます
with Meter('/dev/ttyS2') as m:

私はオンラインで探していましたが、with構文がどのように実装されているかについて本当に良い答えを見つけることができませんでした. __enter__(self)メソッドとメソッドを使用していることがわかりました__exit(self)__。しかし、これらのメソッドを実装する必要があり、 with 構文を使用できますか? それともそれ以上のものがありますか?

これを行う方法の例、またはファイルオブジェクトに既に実装されている方法に関するドキュメントがありますか?

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

python - Python の Ruby の "with" に相当する

Python では、このwithステートメントを使用して、例外がスローされたり、関数呼び出しが返されたりしても、常にクリーンアップ コードが呼び出されるようにします。例えば:

ここでは、例外が発生したにもかかわらず、ファイルは閉じられています。より良い説明はこちらです。

Ruby でこの構造に相当するものはありますか? それとも、Ruby には継続があるので、1 つコーディングできますか?

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

python - 文字列のように機能するクラスを作成するにはどうすればよいですか?

withステートメントの下にインデントされたコードのブロックの文字列への出力をキャプチャするコンテキストマネージャーがあります。このコンテキストマネージャーは、ブロックの実行が終了すると、キャプチャされた出力を含むカスタム結果オブジェクトを生成します。

もちろん、文字列を返すことはできません。文字列は不変であるため、ユーザーがwithステートメントから取得した文字列は、コードブロックの実行後に変更することはできません。ただし、事後に結果オブジェクトを文字列に明示的に変換する必要があるのは、ちょっとしたドラッグですstr(オブジェクトを少しの構文糖衣として呼び出し可能にすることも試しました)。

それで、名前が付けられたときに実際に文字列を返すという点で、結果インスタンスを文字列のように動作させることは可能ですか?を実装しようとし__get__ましたが、それは属性でのみ機能するようです。それとも、私がしたいことは本当に不可能ですか?

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

python - Python with statement - 古いスタイルのファイル処理はもう必要ですか?

ステートメントがwithある場合、次のように、ファイルを開く/例外をチェックする/リソースを手動で閉じる必要がありますか?

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

vb.net - VB.NET の拡張 With キーワード

私の現在のプロジェクトでは、誰もが変数とメソッドに名前を付け、その名前とその機能にちなんでいます。これはコードをすばやく理解するのに適していますが、データセットをエンティティ/オブジェクトにコピーするときなど、長い変数名がたくさんあると頭痛の種になります。したがって、コードを理解していても、読みやすさは依然として打撃を受けます。

VB.NET の With キーワードを使用すると役立ちます。

さて、私の質問ですが、同時に複数の変数に対して With などを使用する方法はありますか? 何かのようなもの:

私はわかりやすい命名規則を支持していますが、それらは物事を混乱させる傾向があります。特にVBで!

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

c++ - これは C++ で "with" ステートメントを実行する最良の方法ですか?

編集:

したがって、この質問は非常にばかげた程度に誤解されており、もはや意味がありません。私が実際に尋ねた質問これの私の特定の実装-はい、無意味であることが知られている、はい、慣用的なC ++に遠く離れていない-マクロが可能な限り優れているかどうか、そしてそれが必ずしも使用しなければならなかったauto、または代わりに適切な回避策があった場合。これほど多くの注目を集めることは想定されていませんでしたし、これほどの誤解もありませんでした。回答者に回答を編集してもらうのは無意味です。これで評判を落とすことは望んでいません。将来の潜在的な視聴者のために、ここにはいくつかの良い情報が浮かんでいます。関連する評判を均等に分配するための回答。先に進んでください。ここには何もありません。


この質問を見てwith、C++ でステートメントを書くのは楽しいかもしれないと判断しました。キーワードはこれautoを非常に簡単にしますが、おそらく使用せずにそれを行うより良い方法はありautoますか? 簡潔にするために、コードの一部を省略しました。

withこれは、他の言語で見られるの使用を示す、より典型的なケースの (更新された) 使用例です。

私が選んだoのは、これが珍しい識別子であり、その形式が「一般的なもの」の印象を与えるためです。より良い識別子またはより使いやすい構文のアイデアがある場合は、それを提案してください。

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

sql - 誰かがCTEに関する良い記事を手伝ってくれませんか. 共通テーブル式

誰かが CTE に関する記事を提供してくれませんか。記事では、CTE の目的と使用場所について説明する必要があります。

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

actionscript-3 - AS3でwithステートメントを使用するかどうか。

そのため、今日はwithステートメントのパフォーマンス、読みやすさなどについて多くのことを読んでいますが、AS3でwithステートメントを使用する必要があるかどうかはまだわかりません。

withステートメントを使用することは、参照を運ぶローカル変数を作成することと同じように見えます。誰かがこのトピックに関する詳細な情報を提供できますか?

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

c# - Visual Basic キーワードに相当する C#: 'With' ... 'End With'?

Visual Basic では、1 つのオブジェクトの複数のプロパティを変更する場合は、次のWith/End Withステートメントがあります。

新しいオブジェクトを作成するときにC#ができることを私は知っています:

myOjectしかし、 (Visual Basic が行っているように) が既に作成されている場合、どうすればよいでしょうか?