作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如何拆分一副纸牌?我制作了一个数组和一个随机的发牌者,但不知道如何拆分牌组。
感谢大家的帮助!我现在有一个工作卡应用程序,确实遇到了其他问题,但很快就解决了。
最佳答案
你可以做一个扩展,这样它就可以返回一个包含两个数组的数组,使用整数、字符串等:
extension Array {
func split() -> [[Element]] {
let ct = self.count
let half = ct / 2
let leftSplit = self[0 ..< half]
let rightSplit = self[half ..< ct]
return [Array(leftSplit), Array(rightSplit)]
}
}
let deck = ["J", "Q", "K", "A"]
let nums = [0, 1, 2, 3, 4]
deck.split() // [["J", "Q"], ["K", "A"]]
nums.split() // [[0, 1], [2, 3, 4]]
但是返回一个命名的元组更好,因为它强制执行了一个事实,即您期望恰好有两个数组作为结果:
extension Array {
func split() -> (left: [Element], right: [Element]) {
let ct = self.count
let half = ct / 2
let leftSplit = self[0 ..< half]
let rightSplit = self[half ..< ct]
return (left: Array(leftSplit), right: Array(rightSplit))
}
}
let deck = ["J", "Q", "K", "A"]
let splitDeck = deck.split()
print(splitDeck.left) // ["J", "Q"]
print(splitDeck.right) // ["K", "A"]
注意:感谢 Andrei 和 Qbyte 给出了第一个正确答案,我只是添加信息。
关于arrays - 如何在 Swift 中将数组分成两半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32074136/
我是一名优秀的程序员,十分优秀!