美文网首页
泛型与Any类型

泛型与Any类型

作者: _莫忘初心 | 来源:发表于2020-09-17 16:01 被阅读0次

相同点:T 与 Any 都能用于定义接受两个不同类型参数的函数,都可以代表任何类型的值。

区别:T可以用于定义灵活的函数,类型检查仍然由编译器负责;Any类型则可以避开Swift的类型系统(所以应该尽可能避免使用)。


来个最简单的例子,一个函数,除了返回它的参数,其他什么都不做。

泛型:

func noOp<T>(x: T) -> T {

    return x 

}

Any类型:

func noOpAny(x: Any) -> Any {

return x 

}

noOp 和 noOpAny 两者都将接受任意参数。

关键的区别在于我们所知道的返回值。在 noOp 的定义中,我们可以清楚地看到返回值和输⼊值完全⼀样。⽽ noOpAny 的例⼦则不太⼀样返回值是任意类型 ,甚⾄可以是和原来的输⼊值不同的类型。

任何调⽤ noOpAny 的函数都不知道返回值会被转换为何种类型。⽽结果就是可能导致各种各样的运⾏时错误。

相关文章

  • 【Swift进阶笔记】泛型

    泛型类型 可选类型是泛型 Array, Dictionary, Set也是泛型,如果不指定类型,系统默认为Any类...

  • 泛型与Any类型

    相同点:T 与 Any 都能用于定义接受两个不同类型参数的函数,都可以代表任何类型的值。 区别:T可以用于定义灵活...

  • swift中泛型和 Any 类型

    除了泛型,Swift 还支持 Any 类型,它能代表任何类型的值。从表面上看,这好像和泛型极其相似。Any 类型和...

  • Swift如何打印一个对象的地址

    参数泛型AnyObject可以改成Any,这样就可以打印struct,enum等类型的变量。 对于Int,等类型,...

  • golang - 泛型

    1. 申明一个泛型函数 [T any] 约束参数的类型,意思是该函数支持任何T类型; 多个泛型参数语法: 2. 申...

  • Typescript泛型

    定义 使用来定义类型,使用泛型,是Typescript中的类型定义更加灵活,相比于any也更加具有语义化。 ...

  • OC 泛型, __kindof

    泛型:限制类型 泛型声明格式:在声明类的时候,在类型后面<泛型名称>泛型定义格式:放在限制的类型后面<类型> 泛型...

  • Swift Tour Learn (十二) -- Swift 语

    本章将会介绍 泛型所解决的问题泛型函数类型参数命名类型参数泛型类型扩展一个泛型类型类型约束关联类型泛型 Where...

  • 14-泛型

    泛型(Generics) 泛型类型 关联类型(Associated Type) 类型约束 协议类型的注意点 泛型解...

  • spring 泛型处理

    java 泛型基础 泛型类型:泛型类型是在类型上参数化的泛型类或接口 泛型使用场景编译时前类型检查。定义为 Col...

网友评论

      本文标题:泛型与Any类型

      本文链接:https://www.haomeiwen.com/subject/wqnlyktx.html