Когда вы определяете функциональные литералы внутри функции, они доступны только в области действия этой функции:
fun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { this % 2 == 0 } // unavailable outside the `task` function
val isOdd: Int.() -> Boolean = { this % 2 != 0 } // unavailable outside the `task` function
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
Если вы хотите получить доступ к этим функциональным литералам вне функции, вам нужно переместить их за пределы task
функция:
val isEven: Int.() -> Boolean = { this % 2 == 0 }
val isOdd: Int.() -> Boolean = { this % 2 != 0 }
fun task(): List<Boolean> {
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
fun anotherTask(): List<Boolean> {
return listOf(2.isOdd(), 23.isOdd(), 2948.isEven())
}
ИЛИ
Вместо использования функциональных литералов вы можете создавать функции расширения:
fun Int.isEven(): Boolean { return this % 2 == 0 }
fun Int.isOdd(): Boolean { return this % 2 != 0 }
fun task(): List<Boolean> {
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
fun anotehrTtask(): List<Boolean> {
return listOf(2.isOdd(), 23.isOdd(), 2948.isEven())
}