声明斯威夫特
问题描述:
对象的随机量
基本上,我试图做这家伙正在试图做的,但斯威夫特:声明斯威夫特
Declaring a random amount of objects in c++
我很新的节目,非常新斯威夫特,所以我对如何做某些事情有些模糊。基本上,我只是想宣布我的球员必须编织的随机数量的敌人,并在他击中其中一个敌人时进行登记。我一直在寻找答案的每一个地方,或者这是一个非常愚蠢的问题,愚蠢的是,从来没有人需要把它放到网上,或者Sift对于别人来说太新了。我猜这是一个愚蠢的问题,但不管我如何解决这个问题都没有想法。
谢谢。
答
Swift数组是动态的,至少是用var array
声明的可变类型。
所以你可以直接添加对象到你的数组中,直到你有足够的对象。
如:
var objects = [String]()
//let numberOfObjects = arc4random_uniform(10) // between 0 and 9
let numberOfObjects = arc4random_uniform(5) + 5 // between 5 and 9
for i in 0..<numberOfObjects {
let object = String()
objects.append(object)
}
println("we have \(countElements(objects)) objects")
答
也许我太密集理解的问题,但在我看来,仅仅宣布一个NSMutableArray会做你想要什么:
let myArray:NSMutableArray = NSMutableArray()
你将不得不所有的灵活性可以随意添加或移除物体。
在任何给定的循环中,您可以删除所有对象,然后使用随机数生成器来添加随机数目的对象,如果这是您正在尝试执行的操作。
我在其他答案,这额外的评论是,我会明确地类型,产生随机数的声明投下的一切:
3210
答
下面是一个使用简单的敌对阶级的例子:
class Enemy : NSObject {
override init() {
super.init()
}
}
let range = (5, 20)
let numEnemies = Int(arc4random_uniform(UInt32(range.1 - range.0) + 1) + UInt32(range.0))
var enemyArray = [Enemy]()
for i in 0..<numEnemies {
enemyArray.append(Enemy())
}
答
你想要一个数组中的随机数的对象。假设:
class MyObject {}
和你有对象的数量上限:
let theObjectLimit = 10
,那么你可以创建MyObject
新的,不同实例的随机数与简单:
let theObjects = (1...arc4random_uniform(theObjectLimit)).map {
_ -> MyObject in return MyObject()
}
当学习像Swift这样的语言,它具有头等功能(又称闭包)时,您将需要使用像map
和reduce
这样的函数w尽可能 - 尤其是代替迭代。