当枚举具有关联值时,如何结合使用 if with case

How to use combined if with case when the enum has associated value

提问人:Piepants 提问时间:11/16/2023 最后编辑:HenrikPiepants 更新时间:11/17/2023 访问量:45

问:

我有一个这样的:enum

enum TheType  {
    case a (CustomData)
    case b (NSDictionary)
    case c (String?)
    case d 
    case e
    ...
}

在一个特定的地方,我只想检查类型是否是,但是在查阅了几个教程并尝试了几种排列之后,我仍然无法编译它。这是我尝试的最新变化:bifcase

let theType = TheType.b([:])
if case let TheType.b(_) ==  theType {...}

产生错误:

“_”只能出现在作业左侧的图案中

或者这会产生不同的错误:

if case let TheType.b(let theDictionary) == theType {...}

在左边交换东西也会产生错误。theType==

如何使用语句来检查值的类型?ifenum

Swift 枚举

评论

0赞 Teja Nandamuri 11/16/2023
一个简单的方法是: ' enum TheType { case b (NSDictionary) case c (String?) var isString: Bool { switch self { case .b: return false case .c: return true } } } '

答:

2赞 vadian 11/16/2023 #1

If case let不仅仅是对方程式的检查,算子是错误的。==

要么是

if case let TheType.b(theDictionary) = theType {...}

if case TheType.b(let theDictionary) = theType {...}

如果相关值无关紧要,则为

if case TheType.b(_) = theType {...}

甚至

if case TheType.b = theType {...}

注意赋值运算符和let