問題タブ [r6]
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.
r - `global.R` 変数が削除されたときのクリーンアップ
質問
ドキュメントから明らかなように、 の変数はserver.R
の変数とは寿命が異なりますglobal.R
。
のクリーンアップ操作にserver
は、session$onSessionEnded
コールバック関数があります。これを使用する例は、ここにあります。
global.R
スクリプトに似たようなものはありますか?
環境
R6
私のセットアップでは、クリーンアップが必要なグローバル スコープに参照セマンティクス (クラスのインスタンス) を持つ 2 つの変数があります。クリーンアップ操作は、両方のオブジェクトに依存しています。いくつかの疑似コード。
A
とB
は両方とも で動作していserver.R
ます。
現在の回避策
classA
とはどちらclassB
もクラスであるため、メソッド (用語ではデストラクタ) にR6
アクセスできます。したがって、次の回避策が可能です。finalize
C++
これには、スコープのため、すでにコールバックを使用する必要があります。
誰かがこれを解決する「適切な」方法を知っていれば、私は非常に興味があります。
r - R6関数の値を変更することはできますか? (良いスタイルの OOP プログラミング?)
私は C++ のバックグラウンドから来て、R6 パッケージを使用した R OOP プログラミングにそれを利用しようとしています。
大規模な OOP コードを記述するときは、次の典型的な状況を考慮してください。- いくつかの (場合によっては多くの) 関数を持つクラスがあり、それぞれが非常に複雑で、コード行が多い場合があります。
CTest.R
当然のことながら、長くてさまざまな関数をすべて同じ ( ) ファイルに入れたくはありません。
C++ でプログラムする場合、そのようなコードをプログラムする通常の方法は次のとおりです。まず、ファイルで関数を宣言し.h
、次に.c
複雑な関数ごとにファイルを作成し、そこで関数を定義します。これにより、効率的なソース管理を含め、共同でコードを書くことが可能になります。
だから、私は R で似たようなことをしようとしました: 最初に、上記のコードのように関数を宣言し、次に「実際の長くて複雑な」コードを後でそれに割り当てようとしました (後で別ファイルCTest-Do1.R
):
今、私はそれが動作するかどうかをテストします:
いいえ、違います。- 上記の出力からわかるように、関数は変更されていません。
何かアドバイス?