[解決済み] Rubyのプライベートモジュールメソッド
2022-09-07 01:06:48
質問
2つの質問に分かれています。
ベストプラクティス
- パブリックインターフェースを使ってデータ構造に対して何らかの操作を行うアルゴリズムがあります。
- これは現在、多数の静的メソッドを持つモジュールで、1つのパブリックインターフェースメソッド以外はすべてプライベートです。
- すべてのメソッド間で共有される必要があるインスタンス変数が1つあります。
これらは私が見ることができるオプションです、どれがベストですか。
- モジュール 静的(rubyでは'module')メソッドを持つ
- クラス 静的メソッドを持つ
- ミキシン データ構造に組み込むためのモジュール
- リファクタリング アルゴリズムのうち、そのデータ構造を変更する部分(非常に小さい)を取り除き、アルゴリズムモジュールの静的メソッドを呼び出すミキシンとする。
技術的な部分
を作る方法はありますか? プライベートモジュールメソッド ?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
は
private
は何の効果もないようです。
を呼び出すことができます。
Thing.priv
を問題なく呼び出すことができます。
どのように解決するのですか?
これを行うための最良の方法(そして既存のライブラリの書き方)は、すべてのロジックを処理するクラスをモジュール内に作成し、モジュールは単に便利なメソッドを提供することだと思います、例えば
module GTranslate
class Translator
def perform(text)
translate(text)
end
private
def translate(text)
# do some private stuff here
end
end
def self.translate(text)
t = Translator.new
t.perform(text)
end
end
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] 私的相続、公的相続、保護相続の違いについて
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] JavaScriptのプライベートメソッド
-
[解決済み] このタスクを実行するには、Ruby と Sass をインストールし、PATH に配置する必要があります」という警告を解決するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyでシングルクォートとダブルクォートを使い分けるとパフォーマンスが上がりますか?
-
[解決済み] レスキューVSシドキック?[クローズド]
-
[解決済み] JSONファイルへの正しい書式での書き込み方法
-
[解決済み] Rubyで空のファイルを作成する:"touch "と同等?
-
[解決済み] ハッシュの配列をハッシュの値でソートするにはどうしたらいいですか?
-
[解決済み] Rubyの"==="演算子は何をするのですか?重複] [重複
-
[解決済み] rubyのClassとKlassの違いは何ですか?
-
[解決済み] Ruby: HTTP でファイルを multipart/form-data で投稿するには?
-
[解決済み] Sinatraがファイルを変更するたびに自動で再読み込みするようにするには?
-
[解決済み] Rubyで本当に安いコマンドラインオプションのパース