對於沒有.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'。這是命令模式的一個版本,其中「命令」名稱是控制器和操作名稱的數組。該文件似乎很清楚。 –
當問這樣一個問題時,在問問題之前自己展示你做了什麼工作來回答這個問題是非常重要的。你讀了什麼?你嘗試了什麼?事實上,很難說你在問之前研究了這個問題。 –