Как выполнить арифметическую операцию c с символом, хранящимся в char - PullRequest
0 голосов
/ 26 мая 2020

У меня есть 2 переменные типа int и переменная String с оператором arithmeti c внутри. Как мне сделать сложение?

var n1 : Int = 10
var n2 : Int = 9
var symbol : String = "+"
var result : Int = n1 + symbol.toInt() + n2

Я получаю символьную переменную в строке

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Чтобы избежать повторения кода, вы можете использовать функциональные ссылки.

fun String.toIntOp(): Int.(Int) -> Int = when (this.trim()) {
    "+" -> Int::plus
    "-" -> Int::minus
    "*" -> Int::times
    "/" -> Int::div
    else -> error("Unknown operator $this")
}

fun main() {
    val n1 : Int = 10
    val n2 : Int = 9
    val symbol : String = "+"
    val result : Int = symbol.toIntOp()(n1, n2)
}
1 голос
/ 26 мая 2020

Использовать переключатель (Java) Использовать, когда (Kotlin)

when (cadena[1]) {
               " + " ->  resultado = n1 + n2
               " - " ->  resultado = n1 - n2
               " * " ->  resultado = n1 * n2
               " / " ->  resultado = n1 / n2
            }
...