Вы можете назначить эти две переменные, не вызывая функцию дважды, используя with
:
fun main(args: Array<String>) {
var var1:Int = 0
var var2:Int = 0
var des = test()
with (des.retresult()) {
var1 = res1
var2 = res2
}
}
В качестве альтернативы, ваша функция может принимать аргументы функции для установки результатов, а затем вы можете передать установщики для эти свойства. Это не будет работать для локальных переменных, только для свойств членов. Если вы используете C, это похоже на передачу указателя на функцию, чтобы она могла напрямую изменять переменную, а не возвращать что-либо.
class Test (var one: Int, var two: Int)
fun doSomething(result1: (Int) -> Unit, result2: (Int) -> Unit) {
result1(2)
result2(2)
}
fun main() {
val test = Test(1, 1)
doSomething(test::one::set, test::two::set)
}
Есть открытое (и, кажется, в основном забытое) запрос функции для того, что вы предложили, деструктурируя присвоение существующим переменным.