[英]Calling different method depending upon variable's value without having an if-else block in Ruby
我有一個變量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中如何做?
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.