【问题标题】:Swift: for-in with two valuesSwift:for-in 有两个值
【发布时间】:2015-09-04 12:04:25
【问题描述】:

几周前我开始学习 C,今天我开始学习 Swift。代码如下:

    import Foundation

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 8, 16, 25],
]
var largest = 0;
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number;
        }
    }
}
println(largest);

为什么我在 for-in 中需要 kind?对于“Prime”,“Square”,...,对吗?我也可以以某种方式使用它吗?

“添加另一个变量来跟踪哪种数字最大,以及最大的数字是什么。”

如何构建它?

【问题讨论】:

  • 如果您对实物不感兴趣,请改用_。 for (_, numbers) ininterestingNumbers...
  • 感谢您的意见!我已经编辑了我的问题。如何同时使用种类和数字?例如:我想保存数字是哪种。我该怎么做?
  • 当时你记得最新的最大数字“种类”包含该数字是来自 Prime、Fibonacci 还是 Square ;-) 现在试着记住它以及你已经存储的最大数字的值变成“最大”
  • import Foundation var largest = 0; var largestKind: String?; let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 8, 16, 25], ] for (kind, numbers) in interestingNumbers { for number in numbers { if number > largest { largest = number; largestKind = kind; } } } println("The number \(largest) is from the type \(largestKind)"); 这是我目前的解决方案。无论如何,输出是“数字 25 来自 Optional("Square") 类型”。我不想要那个“可选...”
  • 有人能帮帮我吗?

标签: objective-c swift


【解决方案1】:
import Foundation
var largest = 0;
var largestKind: String?;

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 8, 16, 25],
]


for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number;
            largestKind = kind;
        }
    }

}
println("The number \(largest) is from the type \(largestKind)");

这是我目前的解决方案。但是,输出是

数字 25 来自 Optional("Square") 类型

如何去掉'Optional("")?我只想要Square这个词。我尝试删除问号 (var largeKind: String?; to var largeKind: String;) 但这样做时出错。

【讨论】:

  • var largestKind = ""
【解决方案2】:

对于那些有同样问题的人,这是我找到的另一个解决方案。 var largestKind 仍然是可选的,因为 String? 但末尾的感叹号 \(largestKind!) 可以访问该值,而无需在实际内容周围添加可选内容。

import Foundation
var largest = 0;
var largestKind: String?;

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 8, 16, 25],
]


for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number;
            largestKind = kind;
        }
    }

}
println("The number \(largest) is from the type \(largestKind!).");

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多