如何使用call,apply和bind强制Ruby中的对象方法类似于JavaScript

时间:2014-09-27 10:09:28

标签: javascript ruby

在JavaScript中,您可以使用call,apply或bind方法将方法转换为对象。我很好奇Ruby中是否有类似的东西。

var item = {
    color:"green"
};


function getColor(){
    return this.color
};


getColor.call(item);  

3 个答案:

答案 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