2016-12-22 45 views
0

功能特定类型的我想是这样的: 如何实现迅速

enum ArgType { case Case1, case Case2 } 
func foo(arg: ArgType) { 
    // code 
} 

上面的代码工作,但ArgType仅用于功能foo,所以我更喜欢以某种方式在“限制”函数的范围,我应该怎么做?


func foo(arg: T) where T = enum _ { case Case1, case Case2 } { 
    // code 
} 
// this doesn't compile, I put this here just for an example for what I want 
+0

我觉得这个问题有点不清楚,你想达到什么目的? –

+0

@AhmadF,对不起。考虑到问题中的代码,我可以编写另一个函数'bar(arg:ArgType)',因为'ArgType'对bar也是可见的,我想要阻止它。 –

回答

0

您不能标记Enum私有并在类范围外使用它。如果你想封装枚举,也许在类/结构的范围内定义它。

struct Identifier { 
    enum Cell { 
     case Base 
     case Home 
    } 

    func getIdentifier(identifier: Cell) -> String { 
     return "An Identifier" 
    } 
} 
+0

是的,使用class/struct/enum封装是一种解决方法! –

0

,如果它被限制的功能。 PPL怎么称呼它?
[IM知道这是没有答案]

答案是:
没有机械师来限制类型的唯一功能类型。
(也许该函数是私有的,并标记私有类型文件可以帮助吗?)

+0

这个想法就像类指定的类型:我可以在类Bar中声明一个类型'Foo',而其他人只能通过键入'Bar.Foo'来明确指出'Foo'类型是有意义的Bar'的上下文。尽管做事私人作品,它不能满足我的强制... –