如何用单个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
相关产品推荐
相关产品推荐

