gpt4 book ai didi

像 Hashie 这样的 Ruby 库可以使用 lambda 作为属性

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:00 25 4
gpt4 key购买 nike

是否有像 Hashie 一样工作的 Ruby 库,除了它可以将 lambda 作为属性并在访问该属性时调用它?

例如,我想要这样的东西:

# Lash = Lambda-able hash
lash = Lash.new(
someProperty: "Some value",
someOtherProperty: ->{ Time.now }
)

lash.someProperty # => "Some value"
lash.someOtherProperty # => 2013-01-25 16:36:45 -0500
lash.someOtherProperty # => 2013-01-25 16:36:46 -0500

最佳答案

这是我的实现:

class Lash < BasicObject
def self.new hash
::Class.new do
hash.each do |key, value|
method_body = if value.respond_to? :call
->(*args){ self.instance_exec(*args, &value) }
else
->{ value }
end
define_method(key, &method_body)
end
end.new
end
end

关于像 Hashie 这样的 Ruby 库可以使用 lambda 作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com