我想允许使用我的程序的人建立多达几个条件,他们将从下拉列表中选择。这在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