hiccLoghicc log by wccHipo日志

随译小文,给Swift 枚举关联值加上标签吧

toc

Intro

疫情放开了,在深圳最冷的时候,随翻一篇外文短文吧。

Swift Enum With Labeled Associated Values

Swift最为一名现代语言,枚举enum非常的强大,按照官网的例子,可以这么使用:

enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) }

在匹配的时候。

var productBarcode = Barcode.upc(8, 85909, 51226, 3) switch productBarcode { case .upc(let numberSystem, let manufacturer, let product, let check): print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).") case .qrCode(let productCode): print("QR code: \(productCode).") }

这很强大,可以在匹配.upc的时候,直接命名取出关联值。但这里的小问题在于,如果对其取名,只能通过线下沟通,或者查阅定义枚举的文档(如果有的话)。

其实这里有个小诀窍,Swift官网文档也尚未提到,开发者可以在声明枚举enum的时候,给关联值加上标签label

像这样:

enum Barcode { case upc(numberSystem: Int, manufacturer: Int, product: Int, check: Int) case qrCode(String) }

这样别人在初始化的行为也会改变,会显式的使用label:

var productBarcode = Barcode.upc(numberSystem: 8, manufacturer: 85909, product: 51226, check: 3)

😄 一个小技巧,记住:

Clarity is more important than brevity