0

私は次のようなハッシュを持っています:

h = {
  a: '/users/sign_up',
  b: "/user/#{@user.id]}"
}

後で私はそうしますh[:b]

ハッシュ自体が初期化されると、ハッシュ値が初期化されます。@user.idしかし、呼び出されるたびに呼び出されたいと思いh[:b]ます。

Rubyのハッシュではできないようです。しかし、それを行うための回避策はありますか?

4

2 に答える 2

3

ハッシュの値にラムダを使用し、実際の値が必要なときにラムダを呼び出すことができます。次に例を示します。

h = {
  a: ->{'/users/sign_up'},
  b: ->{"/user/#{@user.id}"}
}

h[:b].call
于 2013-02-11T16:19:16.870 に答える
2
h = {}
h.default_proc = proc do |hash, key|
  key == :b ? "/user/#{@user.id}" : nil
end
h[:a] #=> nil
h[:b] #=> "/user/<id>"
于 2013-02-11T16:23:14.040 に答える