[解決済み] Rubyでモジュールのインスタンス変数を初期化するには?
2023-07-09 22:04:46
質問
インスタンス変数を使用したいモジュールがあります。現在、このように初期化しています。
module MyModule
def self.method_a(param)
@var ||= 0
# other logic goes here
end
end
initメソッドを呼び出して初期化することもできますね。
def init
@var = 0
end
というのがありますが、これだと常に呼び出すのを忘れないようにしないといけませんね。
もっと良い方法はないでしょうか?
どのように解決するのですか?
モジュール定義で初期化する。
module MyModule
# self here is MyModule
@species = "frog"
@color = "red polka-dotted"
@log = []
def self.log(msg)
# self here is still MyModule, so the instance variables are still available
@log << msg
end
def self.show_log
puts @log.map { |m| "A #@color #@species says #{m.inspect}" }
end
end
MyModule.log "I like cheese."
MyModule.log "There's no mop!"
MyModule.show_log #=> A red polka-dotted frog says "I like cheese."
# A red polka-dotted frog says "There's no mop!"
これは、モジュールが定義されたときにインスタンス変数を設定します。 インスタンス変数やメソッドの定義を追加するために、後でいつでもモジュールを再オープンできることを覚えておいてください。 を追加したり、既存のものを再定義したりすることができます。
# continued from above...
module MyModule
@verb = "shouts"
def self.show_log
puts @log.map { |m| "A #@color #@species #@verb #{m.inspect}" }
end
end
MyModule.log "What's going on?"
MyModule.show_log #=> A red polka-dotted frog shouts "I like cheese."
# A red polka-dotted frog shouts "There's no mop!"
# A red polka-dotted frog shouts "What's going on?"
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] ローカルにインストールされたPythonモジュールの一覧を取得するにはどうしたらいいですか?
-
[解決済み] モジュールのパスを取得する方法は?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み】Rubyモジュールをインクルードせずに、そのインスタンスメソッドを呼び出すことはできますか?
-
[解決済み] Rubyでモジュール変数を作成する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜsumはinject(:+)よりもずっと速いのですか?
-
[解決済み] このタスクを実行するには、Ruby と Sass をインストールし、PATH に配置する必要があります」という警告を解決するには?
-
[解決済み] Rubyでモジュール変数を作成する
-
[解決済み] インストールされているすべてのGemsを削除して最初からやり直す
-
[解決済み] Rubyのプライベートモジュールメソッド
-
[解決済み] define_methodを使ってクラスメソッドを作成するには?
-
[解決済み] Ruby で改行せずに印刷する方法
-
[解決済み] 文字列内の複数の空白と改行を削除する
-
[解決済み] Ruby の正規表現で最初にマッチしたものを返す
-
[解決済み] キュウリのステップを再利用