美文网首页
泛型与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 的函数都不知道返回值会被转换为何种类型。⽽结果就是可能导致各种各样的运⾏时错误。

    相关文章

      网友评论

          本文标题:泛型与Any类型

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