2009-08-16 90 views
0

我想允許使用我的程序的人建立多達幾個條件,他們將從下拉列表中選擇。這在Ruby中可能嗎?

First drop down : object 
Second drop down : attribute 
Third drop down : sign 
Fourth drop down : amount 

因此,用戶的選擇可能看起來像這樣;

person_a 
age 
> 
18 

是否有可能建立一個字符串的if條件,然後執行它?

回答

1

您可能想看看Ruby的eval方法。它允許您評估存儲在字符串中的Ruby表達式,因此您可以從菜單構建一個if語句並使用eval對其進行評估。

eval可能是危險的,特別是在處理用戶輸入時,但如果您小心這是您可以使用的一種方法。

+0

我在C#這樣做(儘管它不是一個動態語言)。 – 2009-08-16 14:19:58

+1

對eval'非常小心。這就像給一個陌生人你的家鑰匙和地址 – edgerunner 2011-07-03 23:14:38

10

假設你有一個方法find_person,這需要人的名字,並返回Person對象,你可以做

find_person(person_name).send(attribute).send(sign, amount) 
+4

這是一個比評估一個字符串更好/更紅寶石般的方式。我們有一個豐富的對象系統和消息傳遞的原因。 – 2009-08-16 15:55:34

+2

沒有冒犯意味着mipadi,但這個解決方案好多了。 – Chuck 2009-08-16 22:03:03