Чтобы избежать повторения кода, вы можете использовать функциональные ссылки.
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)
}