gpt4 book ai didi

swift - Playground 上没有 map 功能的输出

转载 作者:行者123 更新时间:2023-11-28 10:24:21 25 4
gpt4 key购买 nike

我有这些非常简单的代码行:

var friends = ["Mike", "Marika", "Andreas", "Peter", "Sabine"]

friends.map{
println("Hallo \($0)!")
}

这在程序中运行良好,但在 playground 中没有输出。它只告诉我元素的数量以及函数需要运行多少次。但它不写入字符串。

是我的问题还是这是 Xcode 中的错误?

enter image description here

最佳答案

这不是 Xcode 中的错误。当你的 map代码将打印到标准输出(点击 cmd-opt-enter 以在右侧的助理编辑器中显示输出),在风格上你应该避免使用 map为了这。 for...in 你会过得更好循环:

for friend in friends {
println("Hallo \(friend)")
}

如果这次快速查看结果,您会看到更有用的结果:quicklook

(注意,我已将快速查看切换到 ListView ,它显示每个结果,而不仅仅是最后一个)

为什么这会有所不同?这是因为 map并不是真的要针对您的数组运行任意代码。它更具体地用于转换(即映射)您的数组到另一个数组。因此,假设您想要的不是打印 friend 列表,而是问候列表,您可以这样做:

let greetings = friends.map { friend in
"Hallo \(friend)"
}

greetings现在将被设置为一个包含 5 个字符串的新数组,每个名称一个,格式为 "Hallo <name>" . map正在采用一个采用字符串并将其映射到新字符串的闭包。

那么当你写 friends.map { println("...") } 时发生了什么是那个map正在调用闭包,获取闭包中表达式的结果,并用它填充一个新数组。自 println返回 Void , 该表达式每次的结果都是 Void .就是Void Xcode 正在显示(如“(0 elements) ”,这是 UI 显示 Void 的方式)。

相反,使用 for 循环,Xcode 知道一个独立的 println谁的值未被使用不应被解释为结果,而应被解释为输出到标准的内容,这就是它的作用。

关于swift - Playground 上没有 map 功能的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com