/*!3、泛型类型*/
//给一个结构体声明泛型类型
struct structType<TypeName> {
var array:[TypeName] = [TypeName]()
var dic = [String:TypeName]()
//数组增加、删
mutating func appenArray(_ some:TypeName) {
array.append(some)
}
mutating func removArrayIndex(_ index:Int){
array.remove(at: index)
}
//字典增加、
mutating func setValueDic(_ key:String,_ value:TypeName){
dic[key] = value
}
mutating func removDic(_ key:String,_ value:TypeName) -> Bool {
let val = dic.removeValue(forKey: key)
if (val == nil) {return false} ; return true
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//1
var x = 110
var y = 330
typeFunc(xx: &x, yy: &y)
typeFunc2(&x, &y)
//2
var s = "fdsf"
var s1 = "dsfw"
var s2 = 30
hideFunc(&s, &s1)
hideFunc11(s, s1) //编译时错误,泛型函数只声明了<一个类型> ,所以传参只能是相同类型
hideFunc2("first", 999)
//3
var st = structType<Int>()
print(st.array,st.dic) //[] [:]
st.appenArray(10)
st.appenArray(11)
print(st.array) //[10, 11]
st.removArrayIndex(0) //[11]
print(st.array)
st.array.enumerated()
st.setValueDic("one", 32413)
st.setValueDic("tow", 534260)
print(st.dic) //["one": 32413, "tow": 534260]
let dicremob = st.removDic("one", 0)
print(st.dic) //["tow": 534260]
}
/*!1、显式泛型*/
func typeFunc(xx x:inout Int, yy y:inout Int) {
let value = x
x = y
y = value
}
func typeFunc2(_ x:inout Int, _ y:inout Int) {
let value = x
x = y
y = value
}
/*!2、隐式泛型*/
func hideFunc<Ts>(_ x:inout Ts,_ y:inout Ts) {
let value = y
y = x
x = value
}
func hideFunc11<Ts>(_ x:Ts,_ y:Ts) {
print("\(x)=\(y)")
}
func hideFunc2<key,value>(_ x:key,_ y:value){
print("\(x)=\(y)")
}
func hideFunc3<key,value>(_ x:key,_ y:value,_ z:Double){
print("\(x)=\(y) \(z)")
}
}Swift_泛型(inout、泛型函数<TypeName>..)
最新推荐文章于 2021-11-25 16:34:36 发布
本文介绍了Swift中泛型的使用,包括显式泛型和隐式泛型,通过实例展示了如何在结构体中声明泛型类型,并提供了泛型函数的用法,如`typeFunc`和`hideFunc`等。同时,还演示了如何在泛型结构体`structType`中操作数组和字典,以及泛型在实际代码中的应用。
4553

被折叠的 条评论
为什么被折叠?



