【发布时间】:2014-10-20 02:27:03
【问题描述】:
我为纸牌游戏编写了一个非常简单的冒泡排序。它需要一个“卡片”对象数组,每个对象都有一个“顺序”属性,该属性指示要针对相关游戏进行排序的值。
以下代码在 Swift Beta 1 和 Beta 6 之间的一段时间内停止编译,我不确定为什么。
///Sort the cards array by order
func sortCards(cards: Array<Card>) -> Array<Card> {
var sorted = false
while sorted == false {
sorted = true
for i in 0...cards.count - 2 {
if cards[i].order > cards[i+1].order {
sorted = false
var first = cards[i]
var second = cards[i + 1]
cards[i] = second //ERROR
cards[i + 1] = first //ERROR
}
}
}
return cards
}
发生交换的行以非常神秘的消息轰炸掉:
@!value $T5 is not identical to 'Card'
发生了什么变化,我在这里做错了什么?
额外问题:我应该如何理解错误消息?
【问题讨论】:
-
我对swift几乎一无所知,所以如果有问题我会删除这个问题。您的数组是否可能是某种只读的并且不允许任何分配?只是基于this
-
你应该使用
[Card]而不是Array<Card>。 -
@jtbandes 我不熟悉这种语法。这意味着什么?
标签: arrays sorting compiler-errors swift