如何在Ruby中绑定lambda到hash?

Urv*_*lla 2 ruby hash lambda metaprogramming

是否有可能在Ruby中实现这样的行为?(像JavaScript):

hash = {
  attr: 'value',
  lambda: -> do
    puts self[:attr]
    # puts @attr # or this way
  end
}

hash[:lambda].call #should print 'value'
Run Code Online (Sandbox Code Playgroud)

无论是修补还是从Hash继承,都是一种访问语法本身.我只是想让lambdas访问他们的父哈希,而不是在调用时传递它.

Uri*_*ssi 6

而不是使用self- 通过变量名称调用哈希:

hash = {
  attr: 'value',
  lambda: -> do
    puts hash[:attr]
  end
}

hash[:lambda].call
# value
Run Code Online (Sandbox Code Playgroud)