【发布时间】:2013-01-09 22:45:13
【问题描述】:
是否有一个像 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
【问题讨论】:
-
它没有通用性,因为它只有在 proc 的 arity 为零时才有意义。
-
为什么没有普遍性?
-
当值是 proc 时,您希望它被自动评估(调用),对吗?如果它有论据,那么是什么提供了论据? proc 不能在没有参数的情况下被调用,除非它的元数为零。
-
我在下面提供的实现适用于参数。如果你的 proc/lambda 有参数,你应该用参数调用它。例如。
lash.somePropertyThatTakesArguments(someArgument). -
其次,更重要的是,如果你不想要参数,不要给它一个带参数的块。
标签: ruby hash configuration