問題タブ [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.

0 投票する
0 に答える
40 参照

r - `global.R` 変数が削除されたときのクリーンアップ

質問

ドキュメントから明らかなように、 の変数はserver.Rの変数とは寿命が異なりますglobal.R

のクリーンアップ操作にserverは、session$onSessionEndedコールバック関数があります。これを使用する例は、ここにあります。

global.Rスクリプトに似たようなものはありますか?

環境

R6私のセットアップでは、クリーンアップが必要なグローバル スコープに参照セマンティクス (クラスのインスタンス) を持つ 2 つの変数があります。クリーンアップ操作は、両方のオブジェクトに依存しています。いくつかの疑似コード。

ABは両方とも で動作していserver.Rます。


現在の回避策

classAとはどちらclassBもクラスであるため、メソッド (用語ではデストラクタ) にR6アクセスできます。したがって、次の回避策が可能です。finalizeC++

これには、スコープのため、すでにコールバックを使用する必要があります。


誰かがこれを解決する「適切な」方法を知っていれば、私は非常に興味があります。

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

r - R6関数の値を変更することはできますか? (良いスタイルの OOP プログラミング?)

私は C++ のバックグラウンドから来て、R6 パッケージを使用した R OOP プログラミングにそれを利用しようとしています。
大規模な OOP コードを記述するときは、次の典型的な状況を考慮してください。- いくつかの (場合によっては多くの) 関数を持つクラスがあり、それぞれが非常に複雑で、コード行が多い場合があります。

CTest.R当然のことながら、長くてさまざまな関数をすべて同じ ( ) ファイルに入れたくはありません。
C++ でプログラムする場合、そのようなコードをプログラムする通常の方法は次のとおりです。まず、ファイルで関数を宣言し.h、次に.c複雑な関数ごとにファイルを作成し、そこで関数を定義します。これにより、効率的なソース管理を含め、共同でコードを書くことが可能になります。

だから、私は R で似たようなことをしようとしました: 最初に、上記のコードのように関数を宣言し、次に「実際の長くて複雑な」コードを後でそれに割り当てようとしました (後で別ファイルCTest-Do1.R):

今、私はそれが動作するかどうかをテストします:

いいえ、違います。- 上記の出力からわかるように、関数は変更されていません。

何かアドバイス?