Arrays Swift:使用for循环插入项目。最后,当我查询时,它只显示最后插入到每个索引的值
在Swift游乐场中,我使用for循环来插入项目。在循环过程中,它似乎在添加正确的值。在for循环的末尾,当数组全部填满时,当我查询时,它只显示最后插入到每个索引的值 斯威夫特新手,所以我想我在这里做了一些非常愚蠢的事情。。。需要帮助 代码如下:Arrays Swift:使用for循环插入项目。最后,当我查询时,它只显示最后插入到每个索引的值,arrays,swift,Arrays,Swift,在Swift游乐场中,我使用for循环来插入项目。在循环过程中,它似乎在添加正确的值。在for循环的末尾,当数组全部填满时,当我查询时,它只显示最后插入到每个索引的值 斯威夫特新手,所以我想我在这里做了一些非常愚蠢的事情。。。需要帮助 代码如下: class card { var suit: String = "" var rank: String = "" } var card1 = card() var deck = [card]() var playingCard = card(
class card {
var suit: String = ""
var rank: String = ""
}
var card1 = card()
var deck = [card]()
var playingCard = card()
var suits = ["♠︎","♣︎","♥︎","♦︎"]
var ranks = ["A","K","Q","J","10","9","8","7","6","5","4","3","2"]
let countRanks = ranks.count
let countSuits = suits.count
var ctr = 0
for i in 0..<countSuits {
for j in 0..<countRanks {
playingCard.rank = ranks[j]
playingCard.suit = suits[i]
deck.insert(playingCard, atIndex: 0)
println("\(deck[ctr].suit)"+"\(deck[ctr].rank)")
ctr++
}
}
let x = deck.count
for i in 0..<x {
println("\(deck[i].rank)"+"\(deck[i].suit)")
}
类卡{
变量:String=“”
var-rank:String=“”
}
var card1=card()
变量组=[卡]()
var playingCard=card()
变量=[”♠︎","♣︎","♥︎","♦︎"]
风险价值等级=[“A”、“K”、“Q”、“J”、“10”、“9”、“8”、“7”、“6”、“5”、“4”、“3”、“2”]
让countRanks=ranks.count
让countSuits=suits.count
var ctr=0
对于0中的i..您需要在每次迭代中初始化playingCard的新实例:
for i in 0..<countSuits {
for j in 0..<countRanks {
var playingCard = card()
...
}
}
类实例是引用类型。您需要为每个迭代创建一个新的卡实例。移动行var playingCard=card()
就在0中j的之后。谢谢,这很有效。尽管我仍然不确定为什么我需要为每次迭代创建一个新的实例。您的原始代码总是在改变,并且排名总是相同的对象,并且相同的对象被插入了52次。@Ashish在Swift中,类类型是一个引用类型。当您创建数组时,您不需要putt将卡片放入数组中。您正在将引用放入数组中的卡片。现在,因为您只有一张卡片,所以重复输入相同的引用。当您更改卡片中的值时,它会更改所有引用指向的一张实际卡片。感谢您的反馈。我最初尝试追加,但没有为每个迭代创建一个新实例是有效的。
class Card {
var suit: String
var rank: String
init(suit: String, rank: String) {
self.suit = suit
self.rank = rank
}
}
...
var playingCard = Card(suit: suits[i], rank: ranks[j])