我有一个变量name
,它可以包含三个不同值中的一个:"name1"
或"name2"
或"name3"
。根据不同的价值,我必须调用不同的值。对于"name1"
,我需要致电method_name1
,"name2"
,我需要致电method_name2
,同样致"name3"
,我需要致电method_name3
}。
目前,我这样做:
if(name == "name1")
output = method_name1(name)
elsif(name == "name2")
output = method_name2(name)
elsif(name == "name3")
output = method_name3(name)
end
如何使用if-elses,我怎样才能拥有应用方法的地图?如何在Ruby中做到这一点?
答案 0 :(得分:5)
method_map = { 'name1' => :method_name1,
'name2' => :method_name2,
'name3' => :method_name3}
send(method_map[name])
如果name
是实际的方法名称,您可以简单地
send(name)
如果您可以从名称计算method_name
,可以尝试:
send("method_#{name}")
如果这些方法有参数 - 只需将它们添加到send
方法:
send(name, some, other, args)