对于没有.call
方法
.call
的想法的人是调用/执行Proc/Method
实例的方法。下面的例子可能会让你更加清楚
m = 12.method("+")
# => `method` gets the `+` method defined in `Fixnum` instance
# m.class
# => Method
m.call(3) #=> 15
# `3` is passed inside the `+` method as argument
m.call(20) #=> 32
在上例中; Fixnum
12具有+
定义
在示例你张贴
def allow?(controller, action, resource = nil)
allowed = @allow_all || @allowed_actions[[controller.to_s, action.to_s]]
allowed && (allowed == true || resource && allowed.call(resource))
end
@allowed_actions[[controller.to_s, action.to_s]]
返回一个Proc
实例和resource
是param/argument
到方法调用方法。
例如
hash = {[:controller, :action] => 'value'}
# => {[:controller, :action]=>"value"}
> hash[[:controller,:value]]
# => nil
> hash[[:controller,:action]]
# => "value"
FYI:在Ruby中,你可以有Array
为Hash
对象
'@ allow_all'的
Key
如果设置包含TRUE;。 –但是,如果它不是“真”,它包含从(哈希?)检索的过程。当你想调用(即执行)proc时使用'call'。这是命令模式的一个版本,其中“命令”名称是控制器和操作名称的数组。该文件似乎很清楚。 –
当问这样一个问题时,在问问题之前自己展示你做了什么工作来回答这个问题是非常重要的。你读了什么?你尝试了什么?事实上,很难说你在问之前研究了这个问题。 –