如何检查Swift泛型类型是否为Void?

6
我有这样一个类:class MyClass<Input>,我想在其初始化程序中检查Input类型是否为Void
我尝试了一些方法,例如尝试将其转换为Void(Swift编译器允许,但告诉我始终失败),或使用is,但是我在这里缺少一些基础知识。
如何检查泛型类型是否为Void
1个回答

12

你可以通过比较泛型变量的.self值和Void来实现这一点。下面是一个快速示例,你可以将其放到Swift playground中以查看它的工作方式!

import UIKit

class MyClass<T> {
    init() {
        if(T.self == Void.self) {
            print("Void!")
        } else {
            print("Not Void!")
        }
    }
}

// Will print Not Void
var test = MyClass<Int>()

// Will print Void
var test2 = MyClass<Void>()

太棒了,谢谢 - Void.self 是这个难题中缺失的一部分,它完全有必要! - aehlke
有没有类似的技术适用于数组类型? - Shoerob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接