美文网首页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