无法在功能内将[Double]转换为Double

时间:2018-06-14 19:24:31

标签: arrays swift function types type-conversion

如何在不收到此错误的情况下运行此操作?

  

无法调用' stride'使用类型'的参数列表(来自:Double,to:[Double],by:Double)'

我知道答案就在那里,但我对编码很陌生,而且我很难让[双]只在函数中加倍。

const getCamerasFromState = (state: IState): ICameras =>
  _.omit(state, "loading", "error")

我明白为什么它不起作用,因为我告诉他们最后是一个数组。但是我如何让它单独运行数组的每个组件。我认为做var array = [50.0, 40.0, 60.0] var newArray = [Float]() func possible(variable: [Double]) -> Float { var chance: Double = 0.0 let last = variable let interval = -10.0 for _ in stride(from: 100.0, to: last, by: interval) { chance += 0.05 } return Float(chance) } newArray.append(possible(variable: array)) 会有效,但事实并非如此。

理想情况下,最终结果为let last = (variable[index])

1 个答案:

答案 0 :(得分:2)

您需要variable参数为单个Double,而不是数组。然后,您需要为possible中的每个值调用array一次。

以下是更新代码的一种方法:

var array = [50.0, 40.0, 60.0]

func possible(variable: Double) -> Float {
    var chance: Double = 0.0
    let interval = -10.0
    for _ in stride(from: 100.0, to: variable, by: interval) {
        chance += 0.05
    }
    return Float(chance)
}

let newArray = array.map { possible(variable: $0) }
print(newArray)

但这是possible的简单实现:

func possible(variable: Double) -> Float {
    return Float((100 - variable) / 10 * 0.05)
}

您的整套代码可以简化为:

var array = [50.0, 40.0, 60.0]
let newArray = array.map { Float((100 - $0) / 10 * 0.05) }