---
title: "随译小文，给Swift 枚举关联值加上标签吧"
description: "开发者可以在声明枚举enum的时候，给关联值加上标签label。"
url: "https://hicc.pro/p/swift/swift-enum-with-labeled-associated-values"
author: "tyler wang"
published: "2022-12-18T14:36:13.000Z"
updated: "2024-02-13T06:09:11.000Z"
category: "Swift"
tags:
  - "Swift"
image: "https://image.hicc.pro/pro/20221218223631Fudgds06YCNiAvumpThTTwG17-Ws7RSycq8iOFrqAypUYgRul.jpg"
lang: "zh-CN"
site: "Hipo日志"
---

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

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

[Swift Enum With Labeled Associated Values](https://blog.eidinger.info/swift-enum-with-labeled-associated-values?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B589)

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

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

在匹配的时候。

```swift
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**。

像这样：

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

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

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

```

😄 一个小技巧，记住：

> **Clarity is more important than brevity**

---

原文 / Source: <https://hicc.pro/p/swift/swift-enum-with-labeled-associated-values>
