gpt4 book ai didi

swift - For Case 语句中的可选项

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:27 24 4
gpt4 key购买 nike

我有一个字符串数组需要转换为一个整数数组。

import Foundation

let strings = ["One", "2", "Three", "4", "Five", "6"]

let integers = strings.map{Int($0)}

// :Using Optional Binding in a FOR Case Statement
for case let val? in integers {
print("\(val)")
}

在上面的 For Case 语句中,我们正在对 [Int?] 数组中的 Optional 值进行模式匹配。我对这个概念的理解是,由于数组是一个可选的 int 数组,返回的值在使用它们之前必须被解包,但是我们在 For Case 语句中使用 Optional Binding,因此值被解包到变量“val”中”。但是变量“val”本身似乎是一个可选变量,这意味着该值需要在打印语句中再次解包,但这会产生错误:“无法强制解包非可选类型'Int'的值”这意味着“val”不是可选变量。

这真是令人费解。有人可以解释为什么当我们使用“?”时变量“val”不是可选变量吗?有了它!!

谢谢,乌杰瓦尔

最佳答案

val?是“可选模式”和 .some(val) 的快捷方式.如果该表达式不是 nil,则它匹配一个可选表达式,然后绑定(bind) val到匹配表达式的解包值。

来自 Optional Patterns :

An optional pattern matches values wrapped in a some(Wrapped) case of an Optional<Wrapped> enumeration. Optional patterns consist of an identifier pattern followed immediately by a question mark and appear in the same places as enumeration case patterns.

因此val是一个非可选的 Int ,如您所见。

关于swift - For Case 语句中的可选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599935/

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