我正在使用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)"
}
}
答案 0 :(得分:1)
您不能在forEach
的void返回类型内返回值,而是尝试
extension UInt8 {
func opCode() -> String {
if let item = OpCode.allCases.first(where:{ self == $0.uint8 }) {
return "\(item)"
}
return "\(OpCode.NOP)"
}
}