知道Swift中的变量类型

时间:2017-01-13 10:12:04

标签: swift

如何识别Swift中的变量类型。对于例如如果我写

struct RandomStruct.... - 该类型应该为struct而不是RandomStruct

或如果我写class RandomClass...,则类型应为class而不是RandomClass

我尝试过使用Mirror.subjectTypetype(of:),这两项都会将输出设为RandomStructRandomClass

2 个答案:

答案 0 :(得分:9)

您使用Mirror即将结束:您可以查看Mirror的{​​{3}}属性(枚举类型displayStyle),反映您的类型实例

struct Foo {}
class Bar {}

let foo = Foo()
let bar = Bar()

if let displayStyle = Mirror(reflecting: foo).displayStyle {
    print(displayStyle) // struct
}

if let displayStyle = Mirror(reflecting: bar).displayStyle {
    print(displayStyle) // class
}

请注意,.optional也是DisplayStyle枚举Mirror的情况,因此请务必反映具体(未展开)类型:

struct Foo {}

let foo: Foo? = Foo()

if let displayStyle = Mirror(reflecting: foo as Any).displayStyle {
    // 'as Any' to suppress warnings ...
    print(displayStyle) // optional
}

答案 1 :(得分:-3)

你可以这样检查;

*tCurrentPointer = '\0';
*(tCurrentPointer + 1) = '\0';

你可以用这种方式理解你的变量是哪种类。