本文提出单复共体参数的一种实现,同时比较了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