美文网首页Swift
swift之元类型:.Type和.self

swift之元类型:.Type和.self

作者: 小羊爱学习 | 来源:发表于2022-06-22 18:50 被阅读0次

    元类型就是类型的类型。 比如我们说 5 是 Int 类型,此时 5 是 Int 类型的一个值。但是如果我问 Int 类型占用多少内存空间,这个时候与具体某个值无关,而和类型的信息相关。如果要写一个函数,返回一个类型的实例内存空间大小。那么这个时候的参数是一个类型数据,这个类型数据可以是直接说明的比如是 Int 类型,也可以从一个值身上取,比如 5 这个值的类型。这里的类型数据,就是一个类型的类型,术语表述为元类型:metaType。
    .Type 与 .self
    Swift 中的元类型用 .Type 表示。比如 Int.Type 就是 Int 的元类型。 类型与值有着不同的形式,就像 Int 与 5 的关系。元类型也是类似,.Type 是类型,类型的 .self 是元类型的值。
    eg:

            let str:String = "字符串"
            print(str)
            print(str.self)
            print(String.Type.self)
            print(type(of: str))
            print(String.self)
            let stringMetatype: Int.Type = Int.self
            print(stringMetatype)
    

    打印结果:

    字符串
    字符串
    String.Type
    String
    String
    Int
    

    ps:就像我们平时定义一个常量let age:Int = 5,那我们定义一个int的元类型就是let intMetatype: Int.Type = Int.self,我们知道.self代表本身,那么Int.Type.self就是Int.Type
    再比如一个函数:

        func sum(a:Int, b:Int) -> Int{
            
            return a + b
        }
    

    我们知道a参数是Int类型的参数,如果我们需要传入的参数是一个int类型本身呢,那我们的函数的参数a就要是元类型来接收了

        func sum(a:Int.Type, b:Int) -> String{
            
            return "a:是一个int的元类型参数,b是一个int类型参数"
        }
    

    那么在使用时,a我们需要传入一个int的元类型使用

    let sumEX = sum(a: Int.self, b: 78)
    

    相关文章

      网友评论

        本文标题:swift之元类型:.Type和.self

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