乱弹:Swift单复共体参数类型---与Ruby相比不那么优雅的实现

本文探讨了如何在Swift中实现类似于Ruby的单复共体参数功能,即允许方法接受单个或多个同类型参数。通过枚举、OptionSet和泛型的尝试,最终发现Swift的泛型实现相对优雅。然而,Ruby的参数聚合功能在优雅性和灵活性上更胜一筹,其*号表示将参数聚合为数组,无需类型检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文提出单复共体参数的一种实现,同时比较了Ruby中的实现,后者显然更加优雅。适合对Swift语言本身有兴趣,喜欢纠结语法,而且了解其他动态语言的童鞋观看。

什么是单复共体参数?

这是我发明的词…

很简单,就是对于同一类型的对象,既可以传递它的单数形式又可以传递它的复数形式作为方法的参数。

在这里插入图片描述

还是一头雾水???举个栗子:

//display(...)是一个方法,现在还不知道它的原型应该怎么写,但希望如下几种方式都可以调用:

display("A")
display(["A","B"])
display("X","Y")

现在有点明白了吗?只要display方法的形参类型确定下来(String),可以传递任何数量的String对象给他。

第一次尝试

因为Swift的枚举可以自带附加值,所以先用它来试试:

enum ItemType<Item>{
    case one(Item)
    case many([Item])
}

func display(_ strings:ItemType<String>){
    
    var msg = [String]()
    
    switch 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值