簡體   English   中英

在Ruby中沒有if-else塊的情況下,根據變量的值調用不同的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM