1.2.5 泛型和Any类型

泛型和Any类型虽然看起来相似,但其实是有区别的。它们的区别在于Any类型会避开类型的检查,所以尽量少用或不用。而泛型既灵活又安全。下面举一个例子感受一下两者的区别:

func add<T>(_ input: T) -> T {
    //...
    return input;
}
     
func anyAdd(_ input: Any) -> Any {
    //...
    return input;
}

add函数的input参数的类型和函数返回值的类型相同,而anyAdd函数的input参数的类型和函数返回值的类型不同,这样就会失控,在后续的操作中容易出错。