swift - 在 Swift 中编写多个嵌套的 for...in 循环

标签 swift for-in-loop

请问有没有更简洁或更好的方法来在 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/

相关文章:

arrays - 如何创建一个接受字符串并用其他符号替换某些字母的函数

dart - Dart 中的 for-in 循环顺序

Javascript 数组拼接无法正常工作

javascript - 为什么在 Javascript 中使用 for in 循环会出现这种情况?

ios - swift ios 将搜索栏添加到选择器 View

swift - 使用 MusicSequence 初始化 AVMIDIPlayer

ios - 自动增加/减少 UITableViewCell 中的 UILabelView 高度?

swift - Swift 中 Float.addProduct 的用途是什么?

javascript - 将 for in 循环更改为 for 循环

IOS:SDWebImage仅在远程图像未更改时缓存