Sua função teste1
não tem retorno declarado, então ele considera que o retorno dessa função vai ser do tipo kotlin.Unit (semelhante ao void
do Java).
Acredito que o comportamento que você está esperando seja algo parecido com:
fun teste1(valor: (Int) -> Int): Int{ // Definido o retorno como Int
return valor(1) //chamada da função passada por parâmetro, que precisa de um parâmetro do tipo Int
}
fun main() {
teste1 {
it + 1 //Passa para o parâmetro a operação de somar 1
}.let(::println) //resultando no print do número 2
}
ou podemos fazer assim também:
//Definindo uma extension function de Int
fun Int.teste1(valor: (Int) -> Int): Int{
return valor(this)
}
fun main() {
1.teste1 {
it + 1 //Passa para o parâmetro a operação de somar 1
}.let(::println) //resultando no print do número 2
3.teste1 {
it + 1
}.let(::println) //4
}