MST

星途 面试题库

面试题:Kotlin函数式编程中的惰性求值实现

在Kotlin中,如何实现类似惰性求值(Lazy Evaluation)的机制?请通过自定义一个`LazyValue`类来模拟,该类接收一个无参数且返回某种类型值的函数。调用`LazyValue`实例的某个方法时才真正执行传入的函数并返回结果,且只执行一次。请详细写出`LazyValue`类的实现代码,并解释其工作原理。
43.8万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试
class LazyValue<T>(private val supplier: () -> T) {
    private var value: T? = null

    fun getValue(): T {
        if (value == null) {
            value = supplier()
        }
        return value!!
    }
}

工作原理解释

  1. 类定义LazyValue类接收一个无参数且返回类型为T的函数supplierT是泛型,代表最终返回值的类型。
  2. 成员变量private var value: T? = null用于存储最终计算出来的值,初始值为null
  3. getValue方法:这个方法用于获取计算后的值。首次调用时,valuenull,此时执行supplier()函数,计算出结果并赋值给value。后续再调用getValue方法时,直接返回value,不再执行supplier函数,从而实现了惰性求值且只执行一次计算的功能。