当前位置: 首页 > 知识库问答 >
问题:

用Swift反复浏览字典

夹谷斌蔚
2023-03-14

对于Xcode在Swift编程语言指南中给我的这个实验的答案,我有点困惑:

// Use a for-in to iterate through a dictionary (experiment)

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

我知道在对字典进行横向转换时,最大的数字被设置为变量,最大。然而,我不明白为什么Xcode会说最大的被设置了5次,或者1次,或者3次,这取决于每个测试

当查看代码时,我发现它应该单独在“Prime”中设置6次(2、3、5、7、11、13)。然后,它应该跳过“斐波那契”中的任何数字,因为这些数字都小于最大的数字,而最大的数字当前从“素数”设置为13。然后,它应该设置为16,最后在“Square”中设置为25,总共产生8次。

我是不是错过了什么显而易见的东西?

共有3个答案

储思聪
2023-03-14

这是一个用户定义的函数,用于迭代字典:

func findDic(dict: [String: String]) {
    for (key, value) in dict {
        print("\(key) : \(value)")
    }
}

findDic(dict: ["Animal": "Lion", "Bird": "Sparrow"])
// prints…
// Animal : Lion 
// Bird : Sparrow
郎琪
2023-03-14
let dict : [String : Any] = ["FirstName" : "Maninder" , "LastName" : "Singh" , "Address" : "Chandigarh"]
dict.forEach { print($0) }

结果将是

(“姓”、“曼宁德”)(“姓”、“辛格”)(“地址”、“昌迪加尔”)

贾兴学
2023-03-14

Swift(和其他语言)的词典未订购。当您遍历字典时,无法保证顺序与初始化顺序匹配。在本例中,Swift先处理“方形”键,然后再处理其他键。您可以通过向循环中添加print语句来看到这一点。25是正方形的第五个元素,所以最大值将被设置为正方形中5个元素的5倍,然后保持在25。

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

这张照片是:

kind: Square
kind: Prime
kind: Fibonacci
 类似资料:
  • 问题内容: 我正在尝试复制在目标C中执行的for循环,但遇到“’AnyObject’没有名为’GeneratorType’的成员错误: 这是我的雨燕 我试过为字典定义一个holder变量。任何人都可以看到我在做什么错吗? 问题答案: 这不是字典的循环。它循环通过存储在其中一个字典键中的数组。例如,如果您有一个字符串数组作为字典的键之一,这就是想要做的事情。 如果您确实想只遍历字典,这在Swift中

  • chrome浏览器复用与chronium浏览器复用 哪个更稳?速度更快?更不容易被指纹

  • 表 24.2.    向前 向后 整页 Ctrl+f Ctrl+b 半页 Ctrl+d Ctrl+u 文件 G gg 按行号转到相应行 行号 G 按百分比转到相应的行 1~100% 按行卷动 Ctrl+e Ctrl+y 将光标所在行调整至页面中间 zz 统计字数 g Ctrl+g 显示位置信息 Ctrl+g 刷新屏幕 Ctrl+l 提示 gg 定位到文件首行, V 进入可视行模式, G 定位到文件

  • 我是新加入这个董事会的,但我已经读过你很多年了。:) 我正试着学编码,但我还在第一步。然而,我将使用一个脚本来检测用户的浏览器。 这适用于所有主要的浏览器(我在chrome、firefox和IE上试用过),但它不适用Edge。我该怎么修好它?谢谢!

  • 问题内容: 我正在尝试2个替代方法: 忽略右键 忽略+ ,+ 这是我的代码: 这是我的HTML: 该功能有效,但不起作用。 问题答案: 你不能 您可以尝试阻止某些矢量(例如,使右键单击更加困难的黑客,拦截+ ,使其难以选择文本)……但是它们只能起到某种作用,并且不可能阻止所有矢量(编辑->复制) ?查看源代码??等…)。 如果您想保护内容免受技术含量较低的用户的侵害,则可以采用这些方法……但是,正

  • 需要指导和帮助在下面一个。 当下面的代码执行时,我得到了错误。我使用的是最新版本的java、eclipse、火狐和WebDrive jar文件。 错误 线程"main"java.lang.IllegalStateExcture中的异常:驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置;有关详细信息,请参阅https://github.com/mozilla/g