在JavaScript中,您可以使用call,apply或bind方法将方法转换为对象。我很好奇Ruby中是否有类似的东西。
var item = {
color:"green"
};
function getColor(){
return this.color
};
getColor.call(item);
答案 0 :(得分:0)
你可以在Ruby中做同样的事情:
item = {
color: 'green'
}
get_color = ->(arg) {
arg[:color]
}
get_color.call(item) # => "green"
->(foo) { ... }
是lambda { |foo| ... }
答案 1 :(得分:0)
另一种选择是使用Ruby类系统:
item = Item.new
item.define_singleton_method(:color) do
"something"
end
item.color
=> "something"
答案 2 :(得分:0)
如果对象是bind
的{{1}}的实例,您可以UnboundMethod
owner
对象,但仅:
UnboundMethod