swift编程开发Swift开发

Swift 泛型

2017-11-24  本文已影响2人  追逐_chase
Swift.png
泛型

//泛型解决的问题

func exchange(num1: inout Int,num2: inout Int) {
    
    let tmp = num1;
    
    num1 = num2;
    
    num2 = tmp;
    
    
}
var a = 10;
var b = 20;
exchange(num1: &a, num2: &b);

//在交换值的过程中 我们使用的Int型,如果是Double或者String的类型,那么我们在写参数为Double/string的函数,所以泛型在这个时候起到很大的用途了

//<>表示 T的泛型的名称
func exchange<T>(num1: inout T,num2: inout T) {
  
//注意:一旦T的类型确定以后,所有的T 都是该类型
// T 不可以是 多个类型的 在这里,因为运算是类型统一的
    let tmp = num1;
    
    num1 = num2;
    
    num2 = tmp;
    
    
}
var a = 10;
var b = 20;
exchange(num1: &a, num2: &b);


exchange(num1: &a, num2: &b);

var c = "BBBBB";

var d = "cccccc";
exchange(num1: &c, num2: &d);
c
d

//结果是 :"cccccc"    "BBBBB"  交换成功
protocol Work {
    associatedtype T
    func run() -> T ;
    func eat() -> T ;
    
}

class Person:Work  {
    
    func run() -> Person {
        
        print("跑步")
        return self;
    }
    
    func eat() -> Person {
        
        print("吃饭");
        return self;
    }
    
    
}
// 函数有一个泛型T,参数是:T where子句后面,说明T:这个类型是 Person类,在传入参数时应该是 Person实例
func test<T>(a:T)where T:Person {
    
}
上一篇下一篇

猜你喜欢

热点阅读