如何将Scala中的字符串转换为相应的运算符?给定两个整数和字符串"+"我想要添加这两个整数的结果.
最后一个问题非常简单:
def applyOperator(x: Int, y: Int, operator: String) = operator match { case "+" => x + y case "-" => x - y ... }
您可以尝试使用Twitter的Eval库或反射,但我不建议使用更简单的解决方案.
对于第一个问题:运算符本身不是值,因此您不能"将字符串转换为运算符".但是你可以接近:将一个字符串转换为一个函数,它将添加(或减去等)其参数:
def stringToOperator(operator: String): (Int, Int) => Int = operator match { case "+" => _ + _ case "-" => _ - _ ... }
你甚至可以将它概括一点,不仅仅用于整数:
def stringToOperator[A: Numeric](operator: String): (A, A) => A = operator match { ... }
(这也很明显地适用于第一个答案.)