请问有没有更简洁或更好的方法来在 Swift 中编写下面的嵌套 for...in 循环?还是使用 for...in 甚至以正确的方式填充我的卡片?
for cardNumber in 1...3 {
for cardSymbolIdentifier in 1...3 {
for cardColorIdentifier in 1...3 {
for cardShadingIdentifier in 1...3 {
let card = Card(cardNumber: cardNumber, cardSymbolIdentifier: cardSymbolIdentifier, cardColorIdentifier: cardColorIdentifier, cardShadingIdentifier: cardShadingIdentifier)
deckOfCards.append(card)
}
}
}
}
它确实可以完成这项工作,但我在文档中找不到任何关于编写多个嵌套循环的内容。
非常感谢, 安迪
最佳答案
您的 for 循环绝对没有问题。它们是优秀的、写得很好的 Swift。您的代码的唯一问题是它强制 deckOfCards
可变 (var),这可能是不受欢迎的。如果是,您可以使用 map
,但我认为这不是特别好的 Swift,只是略有不同。
let d = (1...3).flatMap { number in
(1...3).flatMap { symbol in
(1...3).flatMap { color in
(1...3).map { shading in
Card.init(cardNumber: number,
cardSymbolIdentifier: symbol,
cardColorIdentifier: color,
cardShadingIdentifier: shading
)}}}}
我可能会以第二种方式写它,但只是出于文体原因。您的 for 循环绝对没问题。
注意@user28434 下面的评论。我的original version其中有一个主要错误(它返回了错误的类型)。自 Swift 发布之日起,我就一直在编写它。我教 swift 。我用 Swift 教授函数式编程。我在写的时候把它搞砸了。我永远不会用一个简单的 for 循环犯那个错误。那里有一个重要的教训。
关于swift - 在 Swift 中编写多个嵌套的 for...in 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55573626/