問題タブ [uplevel]
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.
perl - Perlの上位スコープで変数をローカライズする方法は?
AUTOLOAD
またはその他のサブルーチン ディスパッチ手法を使用する Perl モジュールを開発しているときに、次のパターンに何度か遭遇しました。
これは正常に機能caller
し、正しいスコープが表示されます。
今私がしたいのは、の実行中にローカルで$_
等しいに設定することです。これは次のようになります。$self
&$code
ラッピングを含むソリューションは、caller
パフォーマンスと依存関係の問題により受け入れられません。したがって、それは2番目のオプションを除外しているようです.
最初に戻ると、 の新しい値が$_
の範囲外に出ないようにする唯一の方法goto
は、変更をローカライズしない (実行可能なオプションではない) か、または のようなものを実装することuplevel_local
ですgoto_with_local
。
PadWalker
、Sub::Uplevel
、Scope::Upper
、およびその他を含むあらゆる種類の順列を試してみましたが、適切なタイミングでクリーンアップし、ラップしないB::Hooks::EndOfScope
堅牢なソリューションを思い付くことができませんでした。$_
caller
この場合に機能するパターンを見つけた人はいますか?
(SO の質問:別のスタック フレームで Perl 変数をローカライズするにはどうすればよいですか?は関連していますが、保持することcaller
は要件ではなく、最終的には別のアプローチを使用するという答えがあったため、この場合、その解決策は役に立ちません)
python - Python 2.5 には、Tcl のアップレベル コマンドに相当するものがありますか?
Python には Tcl のアップレベル コマンドに相当するものがありますか? ご存じない方のために説明すると、「uplevel」コマンドを使用すると、呼び出し元のコンテキストでコードを実行できます。Python では次のようになります。
ただし、変数を設定するだけではないため、辞書を変更するだけのソリューションを探しているわけではありません。どんなコードでも実行できるようにしたい。
bash - tclsh スクリプトを評価する方法は?
tclshは、TCL コマンドを含むシェルです。
TCLuplevel
コマンドは指定された TCL スクリプトを評価しますが、tclsh スクリプト (bash コマンドを含むことができる) の評価に失敗します。
uplevel
tclsh スクリプトの類似物を入手するにはどうすればよいですか?
次の TCL スクリプトを検討してください。
これは一種の TCL シェルであるためtclsh main.tcl
、入力するとプロンプトが表示され、インタラクティブセッションMyShell >
にいるかのように動作します。ただし、非対話型セッションにあり、入力したものはすべてコマンドによって評価されます。したがって、ここでは、インタラクティブなtclsh セッションで実行できるように、bash コマンドを使用することはできません。たとえば、シェルから直接開くことはできません。また、機能しません。 tclsh
tclsh
uplevel
vim
exec vim
私が欲しいのは、インタラクティブなセッションMyShell >
のように振る舞うことです。tclsh
私が単に使用できない理由tclsh
は、の最後の行にあるループですmain.tcl
: I have to have that loop and everything must occur in that loop. また、そのループの各反復でいくつかのことを行う必要があるため、vwait
.
これが解決策です。::unknown
関数
を上書きするよりも良い解決策は見つかりませんでした。
アイデアは、評価を対話型セッションのものとして::unknown
処理するように関数を変更することです。MyShell
tclsh
::unknown
システムや tcl のバージョンによって異なる関数のコードを修正しているため、これは醜い解決策です。
これらの問題を回避する解決策はありますか?
namespaces - TCL 名前空間とスタック フレームの違いは何ですか?
Upvar は、コール スタックと呼ばれることもある別のスタック フレーム、または 別のスコープ内の変数へのリンクを作成します。
Upvar は、グローバル (または名前空間) 変数のエイリアスを作成するためにも使用されます2。ただし、名前空間は、 namespace evalコマンドによってのみ作成されます。proc コマンドによって、新しいスタック フレームが作成されます。
ネームスペースとコール スタックは、TCL ネーミング コンテキストを変更できる 2 つの方法のようです。Upvar と Uplevel は、名前空間とコール スタックの両方で機能します。
私はそれを正しく理解しましたか?コール スタックと名前空間の直接的な比較はまだ見ていないので、質問します。
mysql - UPLEVEL 演算子の概念は何ですか?
私はデータベースの専門家ではなく、これまで MySQL データベースを扱ってきました。私は、、、、ステートメントに精通していSELECT
ます。また、ご存知のように、インターネットにはそれらに関する多くの情報があります。INSERT
UPDATE
DELETE
UPLEVEL
最近、ステートメントという名前のことを聞きました。私はそれがどのような概念なのかわかりませんし、それについての良い参考文献も見つかりません。
ええと、それは正確には何ですか?