当我向通用类添加枚举时,Xcode构建错误?

Jim*_*mmy 9 generics enums swift

为什么在向通用类添加枚举时出现错误:

class TestClass<T>{ 
    enum TestEnum {
        case test
    }  
}
Run Code Online (Sandbox Code Playgroud)

错误:

1.  While type-checking 'ExampleTest' at /Users/xxx/xxx/xx/xx/ExampleTest.swift:11:1
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta3 2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我没有收到错误:

class TestClass{ 
    enum TestEnum {
        case test
    }  
}
Run Code Online (Sandbox Code Playgroud)

或这个:

class TestClass<T>{ 
}
Run Code Online (Sandbox Code Playgroud)

Pav*_*eev 20

您不能将任何类型嵌套在通用类型中,反之亦然.换句话说,对于类,结构和枚举,您不能执行以下操作:

class Outer<T> {
    class Inner { }
}
Run Code Online (Sandbox Code Playgroud)

class Outer {
    class Inner<T> { }
}
Run Code Online (Sandbox Code Playgroud)

乃至

class Outer<T> {
    class Inner<T> { }
}
Run Code Online (Sandbox Code Playgroud)

Apple人员解释了限制的原因:

这是一个实施限制.一旦我们的编译器和运行时能够正确处理嵌套在通用上下文中的类型,我们就会删除限制.

PS很抱歉我发布的答案很晚,但问题仍然存在(XCode 6.2).

顺便说一下,有一个非常相似的问题.

  • Swift 3.1和XCode 8.3.2现在支持这一点 (3认同)