簡體   English   中英

在Ruby中,有一種替代的,更優雅的方法來調用方法而不是'case - when'嗎?

[英]In Ruby is there an alternative and more elegant way to call a method than 'case - when'?

在Rails 3.1中,我想通過使用接受參數數據的create方法創建一個嵌入對象,但我想知道是否有比下面的case方法更優雅的方法:

def method_call(obj,data)
  case obj
  when 'a' then User.create_a(data)
  when 'b' then User.create_b(data)
  when 'c' then User.create_c(data)
  end
end

我真的想做類似下面的事情,但由於我傳遞的數據,這會導致錯誤:

def method_call(obj,data)
  User.send("create_#{obj}")(data)
end

有什么建議么? 提前致謝。

send方法采用與被調用方法相同的參數:

User.send("create_#{obj}", data)

這是否是最優雅的解決方案取決於:我將決策過程留給User類,這可能以各種方式發生(例如,像這樣的發送, Proc的哈希等。工廠服務是另一種選擇。

User.create(how, data) # "how" is a, b, c

無論它生活在哪里,都要明白 - 這使得它易於擴展,修復和推理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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