我想允许用户指定用于计算某些属性的函数,并希望将此函数存储在泛型类中。也就是说,类的每个实例都具有相同的接口,但调用'calculate'方法的结果因用户提供的函数而异[/ p>
我还想序列化这个类并将其存储在数据库中供以后使用。这就是我的想法
class LogicalCharge < Charge
attr_reader :name, :type, :formula, :threshold
def initialize(name: nil, type: nil, formula: nil, threshold: nil)
super(name: name, type: type)
@formula = formula
@threshold = threshold
end
def parse(formula: nil)
end
def calculate(dimensions: nil)
parse(formula: formula).call(dimensions) < threshold
end
关于如何最好地从这里开始的任何建议?
答案 0 :(得分:0)
我建议采用一种不同的方法,在这种方法中,您有一个相关类的层次结构,一个用于计算函数的每个当前变量,另一个表包含类名称的字段和运行它的每个参数。
由于类都将符合相同的接口,因此应该可以正常工作。然后,您可以干净地清理用户输入,并避免让用户将可执行代码直接放在您的服务器上的可怕安全隐患。