MST

星途 面试题库

面试题:Kotlin智能类型转换与契约系统的协同应用

给定一个可空类型的列表`List<Any?>`,其中可能包含`Int`类型的数据。你需要编写一个函数,利用Kotlin的智能类型转换和契约系统,确保从列表中提取出的`Int`类型数据之和大于100。请详细说明思路并给出代码实现。
12.6万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 遍历List<Any?>列表,使用智能类型转换筛选出其中的Int类型元素。
  2. 计算这些Int类型元素的和。
  3. 使用Kotlin的契约系统确保这个和大于100。

代码实现

import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract

@ExperimentalContracts
fun sumGreaterThan100(list: List<Any?>): Boolean {
    contract {
        returns(true) implies (calculateSum(list) > 100)
    }
    return calculateSum(list) > 100
}

private fun calculateSum(list: List<Any?>): Int {
    return list.filterIsInstance<Int>().sum()
}