如何在swift中实现一个特定于函数的类型

时间:2016-12-22 08:04:11

标签: swift function types

我想要这样的事情:

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

2 个答案:

答案 0 :(得分:0)

如果仅限于该功能。怎么会打电话呢?
[我知道这不是答案]

答案是:
 没有机制只能将类型限制为功能类型 (也许函数。是私有的,标记私有的类型文件可以帮助吗?)

答案 1 :(得分:0)

您无法将Enum标记为私有,并在类范围之外使用它。如果要封装枚举,可以在类/结构的范围内定义它。

struct Identifier {
    enum Cell {
        case Base
        case Home
    }

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