gpt4 book ai didi

Swift 闭包返回空值

转载 作者:搜寻专家 更新时间:2023-11-01 06:33:29 26 4
gpt4 key购买 nike

我正在阅读这篇关于高阶函数的文章

https://medium.com/@mimicatcodes/simple-higher-order-functions-in-swift-3-0-map-filter-reduce-and-flatmap-984fa00b2532

然后我开始和他们一起玩,发现了这个:

let someArray = [1, 2, 3, 4, 5]

let newArray = someArray.map {
print($0)
$0 * 2
}
print(a)

这将在 newArray 中返回空值

enter image description here

删除 print 函数或专门设置函数的返回类型时:

let a  = someArray.map { number -> Int in
print(number)
return number * 2
}
print(a)

enter image description here

有什么解释吗?

最佳答案

这是因为如果您在闭包中使用速记参数名称您必须从第一行返回,即内联返回。
在您的第一个闭包中,您的第一行是 print() ,它不返回任何内容。如果您这样做:

let newArray  = someArray.map {
$0 * 2
}

或者只是这样:

let newArray  = someArray.map { $0 * 2 }

你会得到结果。

阅读更多相关信息 here in developer docs .


更新如@hamish 所示,可以使用简写参数进行多次计算,但随后我们需要明确提及结果的数据类型以及 return 语句,如:

let newArray: [Int] = someArray.map {
print($0)
return $0 * 2
}

关于Swift 闭包返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44535200/

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