gpt4 book ai didi

swift - 为什么 map (_ :) in Swift Playground return a String and not a tuple?

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:24 25 4
gpt4 key购买 nike

我正在尝试使用 Swift Playground 来使用 map(_:)enumerated() 遍历一组 订单,将第一个完美匹配返回给客户 goods

但是,在 Swift Playground 中测试时; map(_:) 函数返回一个字符串,但它应该是一个元组。

我正在尝试检索索引和值;给定数组过滤器的。

目前,我目前的解决方案是这样的;

let orders = [4,2,7]
let goods = 2
var matching:Int = (orders.filter{ $0 == goods }.first) ?? 0 as Int

在这个例子中,答案是2;但是它没有给我数组的索引。

我在 Swift Playground 的第二次尝试是这样

var r = (orders.filter{ $0 == goods }).enumerated().map { (index, element) -> (Int,Int) in
return (index, element)
}

print (r.first!) // This should report (0,2)

但是,这在 Swift Playground 中会在侧边栏面板中打印出来

"(0, 2)\n"

截图:

swift playground

为什么侧边栏报告这是一个字符串?

在这个例子中有没有办法正确获取索引和元素?

最佳答案

获取商品匹配的订单索引

获取索引和元素:

var r = orders.enumerated().map { ( index, element) -> (Int, Int) in
return (index, element)
}.filter { (index, element) -> Bool in
if element == goods {
return true
}
return false
}

或更紧凑:

var r = orders.enumerated().map { index, element in (index, element) }
.filter { _, element in element == goods ? true : false }

print("r: \(r.first)")

打印:

r: (1, 2)

如果您真的只想找到第一个匹配项,for 循环会更有效,因为您可以在找到第一个匹配项后break


Playground

你看到的"(0, 2)\n"print的结果。它在控制台中打印出的是 (0, 2) 加上换行符。

如果您想在边栏中看到 r.first! 的实际值,请删除打印:

print (r.first!)
r.first!

结果:

关于swift - 为什么 map (_ :) in Swift Playground return a String and not a tuple?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41126322/

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