【问题标题】:Swift-Binary operator cannot be applied to two "Double" operands [duplicate]Swift-Binary 运算符不能应用于两个“双”操作数 [重复]
【发布时间】:2017-01-14 23:49:58
【问题描述】:

我的代码中似乎出现了一个相对常见的错误,但其他问题的解决方案示例似乎与我的情况不太相关。例如; (binary operator '/' cannot be applied to two 'Double' operands)

    let variable1 = Double()
    let variable2 = Double()
    let array = [5, 10]
    var variable3 = Double()

    func function() {
            let variable1 = 50 / variable2
            let variable3 = Double(arc4random_uniform(UInt32(Double(array.count))))
            let scaleAction = SKAction.scale(by: variable1 * variable3, duration: 1)

这就是所有相关代码。无论出于何种原因,我收到一个错误,集中在最后一行的乘法星上,说“二元运算符“*”不能应用于两个“双”操作数。为什么不能呢?有没有办法我可以解决这个问题?

提前致谢。

【问题讨论】:

    标签: swift xcode binary skaction operands


    【解决方案1】:

    错误信息有点误导。真正的问题是scale(by:duration:)CGFloat 作为比例:

    open class func scale(by scale: CGFloat, duration sec: TimeInterval) -> SKAction
    

    所以,你需要传递一个CGFloat。您可以确保variable1variable3CGFloats,或者您可以使用CGFloat 构造函数将其从Double 转换:

    let scaleAction = SKAction.scale(by: CGFloat(variable1 * variable3), duration: 1)
    

    【讨论】:

    • 谢谢!这已经完全解决了这个问题。
    • 你链接的问题本质上是一回事。在这种情况下,该函数采用Int 而不是CGFloat,但解决方案是相同的,您需要确保二元运算符操作的两个值与参数的类型匹配,或者你需要转换它。
    • 哦,我明白了,从现在开始我会记住这一点。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    相关资源
    最近更新 更多