今天,我在散列中定义了一组变量,我在整个模型和控制器中使用各种函数。
从下面的代码中,您可以看到我定义了get_stats,get_fans等函数来定位确切的变量。
我的问题是,是否可以定义一个函数?
立即
REQ={:USER_STATS_IN_NETWORK =>1 ,
:FANS_IN_NETWORK => 2}
USER_STATS_IN_NETWORK_TYPE_ID =REQ[:USER_STATS_IN_NETWORK]
get_stats= some_function(params,USER_STATS_IN_NETWORK_TYPE_ID)
FANS_IN_NETWORK_TYPE_ID = REQ=[:FANS_IN_NETWORK_TYPE_ID]
get_fans= some_function(params,FANS_IN_NETWORK_TYPE_ID)
repeat for 10-over times...
**想要达成:**
REQ={:USER_STATS_IN_NETWORK =>1 ,
:FANS_IN_NETWORK => 2}
#get_* => return some_function(:*) , without defining all of them explicitly
#example: get_user_stats => returns some_function(:USER_STATS_IN_NETWORK)
答案 0 :(得分:2)
您可以尝试这样的事情:
REQ.keys.each do |key|
self.class.send(:define_method, "get_#{key.to_s.sub(/_IN_NETWORK$/, '').downcase}") do
some_function(key)
end
end