swift中的随机播放功能似乎可以删除卡而不是交换它们

时间:2017-09-04 03:04:29

标签: swift

我正在检查一位同事在面试问题中给出的洗牌功能,以便洗牌。在我看来,原始索引卡#34;来自"将被删除和丢失。它被取消了,而不是被交换。我错过了什么吗?

func shuffle() {
        var from = 0
        var to = 0
        for _ in cards {
            from = Int(arc4random_uniform(UInt32(cards.count)))
            to = Int(arc4random_uniform(UInt32(cards.count)))
            cards.insert(cards.remove(at: from), at: to)
        }
        print("\nShuffled deck\n")
    }

1 个答案:

答案 0 :(得分:0)

Array的{​​{1}}函数不只是从数组中删除一个项目;它还返回已删除的元素。上面的代码会立即将删除的元素传递给remove(at:),这会导致已删除的元素插入到其他位置。