Swift表达式无法在合理时间内完成类型检查问题求助
解决Swift编译器类型检查超时问题
这个报错是因为Swift编译器处理混合类型(Int与Double)的复杂表达式时,类型推导负担过重,无法在合理时间内完成检查。
解决方案1:拆分表达式为子步骤
把复杂计算拆分成多个独立子项,同时显式转换参数类型,让编译器的类型检查逻辑更清晰:
func calculateCalSpent(age: Int, height: Int, currentWeight: Int, activityLevel: Int ) -> Int{ // 显式将Int参数转为Double,消除类型推导歧义 let ageDouble = Double(age) let heightDouble = Double(height) let weightDouble = Double(currentWeight) // 拆分计算子项,每个子项类型明确 let weightContribution = 13.75 * weightDouble let heightContribution = 5.003 * heightDouble let ageContribution = 6.755 * ageDouble let totalCalories = 66.47 + weightContribution + heightContribution - ageContribution let cal = Int(totalCalories) print(cal) return cal // Men kg cm }
解决方案2:显式转换表达式内的参数
如果不想拆分步骤,也可以直接在运算时给每个Int参数添加Double()转换,明确类型:
func calculateCalSpent(age: Int, height: Int, currentWeight: Int, activityLevel: Int ) -> Int{ let cal = Int(66.47 + (13.75 * Double(currentWeight)) + (5.003 * Double(height)) - (6.755 * Double(age))) print(cal) return cal // Men kg cm }
两种方式的核心都是减少编译器的类型推导工作量,让运算的类型逻辑更明确,从而避免超时报错。
内容的提问来源于stack exchange,提问作者Enver Enes Keskin
相关产品推荐
相关产品推荐

