基本上,我有一个RPG类型的Rails应用程序。我将技能存储在技能数据库中,其中包含以下字段:name,min_level,skill_type,formula
我的公式目前存储为String。这个想法是让它说出类似“1000 * min_level”的东西,并以某种方式运行它来计算技能伤害。
有没有好办法呢?
答案 0 :(得分:1)
您可以使用 eval 。如果min_level是作用域中的变量,那么该字符串可以作为Ruby执行而无需任何中间步骤。
允许代码执行这样的巨大安全问题,当然。取决于这些字符串的来源。
答案 1 :(得分:1)
尽管将应用程序逻辑保留在应用程序本身中可能是最好的,但使用eval()会很简单。
eval("1000 * %i" % min_level)
答案 2 :(得分:1)
也许你可以尝试在两者之间做一些事情:不允许管理员直接编辑这些表达式,但是创建一些简单的(?)解析器,它将位于中间,哪个会