You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单个Swift函数实现添加单个或多个枚举值到数组

实现方案(以C#为例)

1. 基础类型定义

先明确枚举和结构体的基础结构:

// 枚举类型定义
public enum LabelEnum
{
    LabelA,
    LabelB,
    LabelC
}

// 包含枚举数组的结构体
public struct LabelEnumModel
{
    public List<LabelEnum> Labels { get; set; } = new List<LabelEnum>();
}

2. 通用添加函数实现

利用C#的params关键字,让函数支持接收任意数量的LabelEnum参数,直接替代两个重载:

public void AddLabels(LabelEnumModel model, params LabelEnum[] labels)
{
    if (labels == null || labels.Length == 0)
        return;
    
    model.Labels.AddRange(labels);
}

使用示例

var model = new LabelEnumModel();
// 添加单个枚举值
AddLabels(model, LabelEnum.LabelA);
// 添加多个枚举值
AddLabels(model, LabelEnum.LabelB, LabelEnum.LabelC);
// 直接传入数组也支持
var labelArray = new[] { LabelEnum.LabelA, LabelEnum.LabelC };
AddLabels(model, labelArray);

实现方案(以Java为例)

1. 基础类型定义

// 枚举类型定义
public enum LabelEnum {
    LabelA, LabelB, LabelC
}

// 包含枚举集合的类(Java无结构体,用类模拟)
public class LabelEnumModel {
    private List<LabelEnum> labels = new ArrayList<>();

    public List<LabelEnum> getLabels() {
        return labels;
    }
}

2. 通用添加函数实现

利用Java的可变参数...特性,实现同样的效果:

public void addLabels(LabelEnumModel model, LabelEnum... labels) {
    if (labels == null || labels.length == 0) {
        return;
    }
    model.getLabels().addAll(Arrays.asList(labels));
}

使用示例

LabelEnumModel model = new LabelEnumModel();
// 添加单个枚举值
addLabels(model, LabelEnum.LabelA);
// 添加多个枚举值
addLabels(model, LabelEnum.LabelB, LabelEnum.LabelC);
// 传入数组也支持
LabelEnum[] labelArray = {LabelEnum.LabelA, LabelEnum.LabelC};
addLabels(model, labelArray);

核心思路

不管哪种语言,核心都是利用可变参数特性让同一个函数兼容单个/多个枚举值的传入,省去重载函数的冗余代码。如果是不支持可变参数的语言,也可以让函数统一接收数组参数,再额外写个简便方法把单个值包装成数组传入,但可变参数是最简洁的实现方式。

内容的提问来源于stack exchange,提问作者iPadawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:34:54