找不到接受提供的参数的'+'的重载

时间:2014-06-04 16:43:06

标签: swift

所以我试图将我在Objective-C中制作的游戏转换为Swift。

我试图让它工作,但它一直给我一个错误。

    var actualX = (Double(arc4random() ) % Double(rangeX) ) + Double(minX);

我也尝试过:

    var actualX = (arc4random() % rangeX) + minX;

我已经查看了类似问题的Stack Overflow上的其他帖子,但是没有一个帖子帮助或解决了我的问题......

2 个答案:

答案 0 :(得分:4)

arc4random()返回UInt32,您%运算符的任何参数都必须是兼容类型。

将您的变量合并到UInt32。你没有提到它们是什么类型,但我假设它们是某种形式的整数。你可以在以后明显强迫其他类型。

var actualX = (arc4random() % UInt32(rangeX)) + UInt32(minX)

这是swift强力输入的结果。

答案 1 :(得分:1)

这对我来说很好用:

import Cocoa

let minX = 3.2
let rangeX = 42.0 

let actualX = (Double(arc4random()) % rangeX) + minX

执行后,由于Swift的类型推断,actualX将是一个Double。

@otherRepliants:当然arc4random()返回一个UInt32,但为什么不把它强制转换为Double。工作正常。