面试题答案
一键面试实现思路
- 使用Kotlin的
kotlin.io
包下的函数来读取文件内容,将文件读取操作集中在一个函数内,尽量减少其对其他纯函数的影响。 - 利用Kotlin的函数式编程特性,如
filter
、map
和sum
来处理整数列表,这些操作都是纯函数。 - 将文件读取和数据处理逻辑分开,使得数据处理部分可以独立测试,不受文件读取副作用的干扰。
关键代码示例
import java.io.File
fun readIntegersFromFile(filePath: String): List<Int> {
return File(filePath).readLines()
.mapNotNull { it.toIntOrNull() }
}
fun processIntegers(numbers: List<Int>): Int {
return numbers
.filter { it % 2 == 0 }
.map { it * it }
.sum()
}
fun main() {
val filePath = "path/to/your/file.txt"
val numbers = readIntegersFromFile(filePath)
val result = processIntegers(numbers)
println(result)
}
在上述代码中,readIntegersFromFile
函数负责读取文件并将每行内容转换为整数,processIntegers
函数对读取到的整数列表进行偶数过滤、平方映射并求和操作。main
函数将两者结合起来完成整个任务。这样,数据处理部分(processIntegers
)是纯函数,而文件读取部分(readIntegersFromFile
)的副作用被隔离在一个函数内。