私は次のようなハッシュを持っています:
h = {
a: '/users/sign_up',
b: "/user/#{@user.id]}"
}
後で私はそうしますh[:b]
。
ハッシュ自体が初期化されると、ハッシュ値が初期化されます。@user.id
しかし、呼び出されるたびに呼び出されたいと思いh[:b]
ます。
Rubyのハッシュではできないようです。しかし、それを行うための回避策はありますか?
私は次のようなハッシュを持っています:
h = {
a: '/users/sign_up',
b: "/user/#{@user.id]}"
}
後で私はそうしますh[:b]
。
ハッシュ自体が初期化されると、ハッシュ値が初期化されます。@user.id
しかし、呼び出されるたびに呼び出されたいと思いh[:b]
ます。
Rubyのハッシュではできないようです。しかし、それを行うための回避策はありますか?
ハッシュの値にラムダを使用し、実際の値が必要なときにラムダを呼び出すことができます。次に例を示します。
h = {
a: ->{'/users/sign_up'},
b: ->{"/user/#{@user.id}"}
}
h[:b].call
h = {}
h.default_proc = proc do |hash, key|
key == :b ? "/user/#{@user.id}" : nil
end
h[:a] #=> nil
h[:b] #=> "/user/<id>"