最后一个问题非常简单:
def applyOperator(x: Int, y: Int, operator: String) = operator match {
case "+" => x + y
case "-" => x - y
...
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用Twitter的Eval库或反射,但我不建议使用更简单的解决方案.
对于第一个问题:运算符本身不是值,因此您不能"将字符串转换为运算符".但是你可以接近:将一个字符串转换为一个函数,它将添加(或减去等)其参数:
def stringToOperator(operator: String): (Int, Int) => Int = operator match {
case "+" => _ + _
case "-" => _ - _
...
}
Run Code Online (Sandbox Code Playgroud)
你甚至可以将它概括一点,不仅仅用于整数:
def stringToOperator[A: Numeric](operator: String): (A, A) => A = operator match { ... }
Run Code Online (Sandbox Code Playgroud)
(这也很明显地适用于第一个答案.)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |