gpt4 book ai didi

cocoa - Swift 中的 Optional 和可选类型有什么区别?扩展Optional携带错误信息?

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

Update - there is no difference between Optional and optional types in Swift - they are the same thing.

所以在 Swift 中他们引入了 Type?构造,创建一个可选类型,“强制”程序员检查该值是否实际存在。

此外,在 Swift 中没有异常处理。但是有这种内置的可选机制。

此可选功能 ?只是一个 Optional<T>灵感来自 Haskell 的 Maybe 的幕后枚举.

我想知道是否有任何方法可以通过可选类型传递错误信息。可以"abc123".toInt()通过可选类型返回错误信息 Int? ?这可以替代 Exceptions 或 NSError 吗?当然,Cocoa 仍然使用(并将使用?)NSError 模式。

在 Playground 上玩耍,我在 Swift 的“header”中找到了这段代码:

protocol Printable {
var description: String { get }
}

extension T? : Printable {
var description: String { get }
}

基本上这会添加一个只读属性 description到任何可选类型。这将非常强大(我猜可能会导致很多问题)。

但在尝试扩展自己之后 T?我得到一个错误:

Non-nominal type 'T?' cannot be extended

那么为什么他们不为所有可选类型添加一个属性来携带错误信息呢?不会有用吗?我的意思是,如果您想要多个返回类型,您可以返回一个元组...

最佳答案

这已经是语言的一部分了

extension Optional : DebugPrintable {

/// A textual representation of `self`, suitable for debugging.
var debugDescription: String { get }
}

关于cocoa - Swift 中的 Optional<T> 和可选类型有什么区别?扩展Optional携带错误信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185549/

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