【发布时间】:2015-12-16 05:58:22
【问题描述】:
我正在开发一款纸牌游戏,并希望创建一个函数来循环遍历我的 Players 数组并为每个玩家执行一些功能,所以我没有大量
for var player in Players {
player.doSomeFunction()
}
遍布我的代码。相反,我想要如下内容:
func everyone(doThis: func) {
for var player in Players {
player.doThis(<params, etc…>)
}
}
这样我就可以在代码的其他地方调用Players.everyone(doThis(params, etc…)),而不必每次我需要让所有玩家做某事时都循环播放器。
如何创建一个函数,将协议中定义的任何函数作为其参数? 我遇到的问题是,当你在 Swift 中使用函数作为参数时,你必须在函数声明中定义函数参数的参数和返回类型。或者,是否有调用Players.forAllElements(doThisFunction) 的内置方法(其中Players 是Array<Player>)?
如果有帮助,我有两个符合 Player 协议的类:ComputerPlayer 和 HumanPlayer。
【问题讨论】:
-
players.forEach { $0.doSomeThing(parameter, ...) }呢? -
Mini-markdown 限制了我的风格:不能使用多行代码示例。当我尝试
Players.forEach { $0.sortHand() }时,它抱怨不可变性。使用in this post 建议的方法会更好吗?
标签: arrays swift function swift2 function-parameter