gpt4 book ai didi

swift - 无法匹配类型的值

转载 作者:搜寻专家 更新时间:2023-11-01 06:17:33 26 4
gpt4 key购买 nike

我刚开始使用 Swift 3,我正在将 Rails 项目转换为 swift(我学习时的副项目)

相当简单,我有一个正在转换的 Rails 语句,我在 Xcode 中收到许多红色错误:

let startingPoint: Int = 1
let firstRange: ClosedRange = (2...10)
let secondRange: ClosedRange = (11...20)

func calc(range: Float) -> Float {
switch range {
case startingPoint:
return (range - startingPoint) * 1 // or 0.2
case firstRange:
return // code
default:
return //code
}
}

calc 将有一个 IntFloat 值:1010.50

错误是:

Expression pattern of type ClosedRange cannot match values of type Float

Binary operator - cannot be applied to operands of type Float and Int

我了解这些错误,但我不知道要搜索什么来更正错误。你能给我指出正确的方向吗?

最佳答案

Swift 是强类型的。每当你使用变量或将某些东西作为函数参数传递时,Swift 会检查它的类型是否正确。您不能将字符串传递给需要整数等的函数。Swift 在编译时进行此检查(因为它是静态类型的)。​​

要遵守该规则,请尝试将您的代码更改为:

let startingPoint: Float = 1
let firstRange: ClosedRange<Float> = (2...10)
let secondRange: ClosedRange<Float> = (11...20)

func calc(range: Float) -> Float {
switch range {
case startingPoint:
return (range - startingPoint) * 1 // or 0.2
case firstRange:
return 1.0 // 1.0 is just an example, but you have to return Float since that is defined in the method
default:
return 0.0 // 0.0 is just an example, put whatever you need here
}
}

关于swift - 无法匹配类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41103114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com