我在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)"
}
}
最佳答案
不能在forEach
的void返回类型中返回值,请尝试
extension UInt8 {
func opCode() -> String {
if let item = OpCode.allCases.first(where:{ self == $0.uint8 }) {
return "\(item)"
}
return "\(OpCode.NOP)"
}
}