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

时间:2014-07-22 22:34:31

标签: generics enums swift

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

class TestClass<T>{ 
    enum TestEnum {
        case test
    }  
}

错误:

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

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

class TestClass{ 
    enum TestEnum {
        case test
    }  
}

或者这个:

class TestClass<T>{ 
}

1 个答案:

答案 0 :(得分:20)

您不能将任何类型嵌套在通用类型中,反之亦然。 换句话说,你不能为类,结构和枚举做这些事情:

class Outer<T> {
    class Inner { }
}

class Outer {
    class Inner<T> { }
}

甚至

class Outer<T> {
    class Inner<T> { }
}

Apple人explained限制原因:

  

这是一个实施限制。我们将删除限制一次   我们的编译器和运行时能够正确处理嵌套的类型   通用语境。

P.S。很抱歉,我这么晚发布了答案,但问题仍然存在(XCode 6.2)。

顺便说一句,question非常相似。