【发布时间】:2014-09-25 10:59:12
【问题描述】:
我需要创建一个数组,其对象为 Range 类型。但是创建如下所示的数组会产生错误“对泛型类型'Range'的引用需要<...>中的参数”
var ranges:Array<Range> = []
基本上,我想要完成的是创建一个范围列表,作为生成随机类型的阶跃函数。我在没有使用数组的情况下完成了这项工作,但是当我添加更多类型时,我觉得有必要将它们循环到一个数组上。我的问题是范围不能以某种方式存储在 Swift 的数组中。这是我的旧代码。
let twisterUpperRange = UInt32(roundf(twisterRate * 1_000))
let bombUpperRange = UInt32(roundf(bombRate * 1_000)) + twisterUpperRange
let blindUpperRange = UInt32(roundf(blindRate * 1_000)) + bombUpperRange
let randomNumber = arc4random_uniform(1_000) + 1
var powerupType:PowerupType
switch randomNumber {
case 0...twisterUpperRange:
powerupType = PowerupType.TwisterType
case twisterUpperRange...bombUpperRange:
powerupType = PowerupType.BombType
case bombUpperRange...blindUpperRange:
powerupType = PowerupType.BlindType
default:
powerupType = PowerupType.NormalType
}
return powerupType
【问题讨论】:
-
您的范围是否都将是同一类型(即
UInt32)?如果是这样,您可以这样做:var ranges: Array<Range<UInt32>>.