swift中这个Objective-c代码的等价物是什么?

时间:2015-08-15 15:06:27

标签: ios objective-c swift

此代码的swift中的替代代码是什么?

static inline CGFloat randomInRangeScale(CGFloat scale)
{
    CGFloat value = arc4random_uniform(INT16_MAX);
    return value * 0.000015 + 0.8 ;
}

我试过了:

func randomInRangeScale(scale : CGFloat) -> CGFloat
{
    let value : CGFloat = arc4random_uniform(UInt16);
    return value * 0.000015 + 0.8 ;
}

但它给了我一个错误"Cannot invoke 'arc4random_uniform' with an argument list of type '((UInt16).Type)"

2 个答案:

答案 0 :(得分:0)

arc4random_uniform的参数类型为UInt32,因此您必须将UINT16_MAX转换为UInt32并将值转换为CGFloat

试试这个:

func randomInRangeScale(scale : CGFloat) -> CGFloat {
    let value = arc4random_uniform(UInt32(UINT16_MAX));
    return CGFloat(value) * 0.000015 + 0.8;
}

答案 1 :(得分:0)

这应该做的工作

{{1}}