2009-08-16 72 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