为什么ReturnType在此Swift函数中不起作用?

时间:2019-05-23 22:17:02

标签: swift

我正在使用Xcode 10.2.1中的Swift 5

我在UInt8扩展名的内部拥有此功能

编译器在第5行中抱怨, void函数中有意外的非void返回值

正确定义了返回类型,如果对行return "\(opCode)"进行了注释,则可以正常工作,最后一行return "\(OpCode.NOP)的返回值我正在使用"\(OpCode.NOP)"以避免添加其他行枚举变量,但是是常规字符串

如果我将行更改为return "",错误仍然存​​在,因此它与OpCode枚举无关。

extension UInt8 {
    func opCode() -> String {
        OpCode.allCases.forEach { opCode in
            if self == opCode.uint8 {
                return "\(opCode)"  //Unexpected non-void return value in void function
                //return ""  // Error persists
            }
        }
        return "\(OpCode.NOP)"
    }
}

1 个答案:

答案 0 :(得分:1)

您不能在forEach的void返回类型内返回值,而是尝试

extension UInt8 {
    func opCode() -> String { 
       if let item = OpCode.allCases.first(where:{ self == $0.uint8 }) { 
         return "\(item)"
       } 
        return "\(OpCode.NOP)"
    }
}