[解決済み] Rubyメタプログラミング:動的インスタンス変数名
2023-01-01 15:32:27
質問
以下のようなハッシュがあるとします。
{ :foo => 'bar', :baz => 'qux' }
オブジェクトのインスタンス変数となるキーと値を動的に設定するにはどうしたらよいでしょうか...。
class Example
def initialize( hash )
... magic happens here...
end
end
...その結果、モデルの内部は以下のようになります。
@foo = 'bar'
@baz = 'qux'
?
どのように解決するのですか?
お探しの方法は
instance_variable_set
. だから
hash.each { |name, value| instance_variable_set(name, value) }
あるいは、もっと簡単に言うと
hash.each &method(:instance_variable_set)
インスタンス変数名に "@" がない場合(OPの例のように)、それを追加する必要があるので、以下のようになります。
hash.each { |name, value| instance_variable_set("@#{name}", value) }
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rubyのclass << selfイディオム
-
[解決済み] このタスクを実行するには、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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Hash each ループでインデックスにアクセスすることは可能ですか?
-
[解決済み] Rubyのsend()は何をするのですか?
-
[解決済み] インストールされているすべてのGemsを削除して最初からやり直す
-
[解決済み] 最大値のハッシュのキーはどのように見つけるのですか?
-
[解決済み] ルビー 負の数を正の数に変換する?
-
[解決済み] Rubyのオフ・ザ・レール
-
[解決済み] 文字列を DateTime に変換する
-
[解決済み] rspecでテストグループを無効にする?
-
[解決済み] メソッドから2つ以上の値を返す
-
[解決済み] クラスのインスタンスメソッドの一覧を取得する