Swift - 仅针对其中一个案例扩展枚举

时间:2016-11-03 08:16:06

标签: swift enums where

所以我有一个枚举,它控制一个视图控制器的实例以及所述视图控制器的创建。见下文:

RGOSessionsViewController

我想在该枚举上创建一个存储实例化视图控制器的属性,但由于我不解释的原因(主要是易于与现有代码集成),我希望使用特定的类类型为Active,Scheduled和分别完成。他们都来自extension RGOSessionsTableType where self == .Active { } ,但正如我所提到的,我宁愿不做这种较低级别的属性。

我已经尝试过以下无法编译的内容,我以前从未在扩展的子句中做过,所以很可能我的语法错了,或者根本不可能:

def printItems(l):
for x in range(len(l)):
    if x == 0:
        return False
    elif x == 1:
        return l

赞赏任何建议。

1 个答案:

答案 0 :(得分:1)

从评论中移出:

  

我认为这里的枚举不是一个好主意。您应该尝试使用协议+ 3类/结构来实现它。这将允许你扩展“只有一个案例”并在其中添加更多“案例”。与here一样。

关于链接文章的快速信息:

  

为什么我不再喜欢Swift Enums

     

在最后两个悉尼Cocoaheads中,每当我在演讲中看到使用Enums时,我一定要问“为什么是enum而不是协议?”。这篇博文有望解释枚举的气味。

           

首先,我必须说如果您永远不需要延长案例数量,那么枚举很棒。但是,不正确的枚举使用会破坏 SOLID 原则中的 O

     

公开关闭原则

     

“类型”应该对扩展程序开放,但对于修改时会关闭。

     

我相信表达问题最能解释违规行为。

     

表达式问题

     

添加新方法;添加新案例。选一个。

     

我将尝试使用枚举引导您完成表达式问题,然后使用访问者模式继续“解决”它。