嵌套枚举会导致Swift中的无限编译

时间:2018-08-25 17:01:48

标签: swift xcode inner-classes

我有一个要定义的类,如下所示:

class MockUrlContentLoader : MockObject<MockUrlContentLoader.FunctionCall>, UrlContentLoader {

enum FunctionCall : Hashable {
    case createString(fromContentsOf: URL, encoding: String.Encoding)
}

func createString(fromContentsOf url: URL, encoding enc: String.Encoding) throws -> String {

    if let responseValue = try executeThrowableFunctionCall( FunctionCall.createString(fromContentsOf: url, encoding: enc) ) {
        return responseValue as! String
    } else {
        return ""
    }
}

}

在Xcode 9中导致永无止境的编译。

当我按如下所示重新定义类时,代码将按预期编译并运行:

enum MockUrlContentLoaderFunctionCall : Hashable {
    case createString(fromContentsOf: URL, encoding: String.Encoding)
}

class MockUrlContentLoader : MockObject<MockUrlContentLoaderFunctionCall>, UrlContentLoader {

    func createString(fromContentsOf url: URL, encoding enc: String.Encoding) throws -> String {

        if let responseValue = try executeThrowableFunctionCall( MockUrlContentLoaderFunctionCall.createString(fromContentsOf: url, encoding: enc) ) {
            return responseValue as! String
        } else {
            return ""
        }
    }
}

我更喜欢第一种形式,因为它看起来更具可读性。 Xcode为什么不编译第一种形式? Swift编译器中有一些错误吗?

0 个答案:

没有答案