我想允許使用我的程序的人建立多達幾個條件,他們將從下拉列表中選擇。這在Ruby中可能嗎?
First drop down : object
Second drop down : attribute
Third drop down : sign
Fourth drop down : amount
因此,用戶的選擇可能看起來像這樣;
person_a
age
>
18
是否有可能建立一個字符串的if
條件,然後執行它?
我想允許使用我的程序的人建立多達幾個條件,他們將從下拉列表中選擇。這在Ruby中可能嗎?
First drop down : object
Second drop down : attribute
Third drop down : sign
Fourth drop down : amount
因此,用戶的選擇可能看起來像這樣;
person_a
age
>
18
是否有可能建立一個字符串的if
條件,然後執行它?
您可能想看看Ruby的eval
方法。它允許您評估存儲在字符串中的Ruby表達式,因此您可以從菜單構建一個if
語句並使用eval
對其進行評估。
eval
可能是危險的,特別是在處理用戶輸入時,但如果您小心這是您可以使用的一種方法。
假設你有一個方法find_person
,這需要人的名字,並返回Person對象,你可以做
find_person(person_name).send(attribute).send(sign, amount)
這是一個比評估一個字符串更好/更紅寶石般的方式。我們有一個豐富的對象系統和消息傳遞的原因。 – 2009-08-16 15:55:34
沒有冒犯意味着mipadi,但這個解決方案好多了。 – Chuck 2009-08-16 22:03:03
我在C#這樣做(儘管它不是一個動態語言)。 – 2009-08-16 14:19:58
對eval'非常小心。這就像給一個陌生人你的家鑰匙和地址 – edgerunner 2011-07-03 23:14:38