Почему ReturnType не работает в этой функции Swift? - PullRequest
0 голосов
/ 24 мая 2019

Я работаю со Swift 5, в Xcode 10.2.1

У меня есть эта функция внутри расширения UInt8

Компилятор жалуется в строке 5 с Неожиданное не возвращаемое возвращаемое значение в пустой функции

Тип возвращаемого значения определен правильно, и если строка 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 Ответ

1 голос
/ 24 мая 2019

Вы не можете вернуть значение внутри типа возврата void для forEach, вместо этого попробуйте

extension UInt8 {
    func opCode() -> String { 
       if let item = OpCode.allCases.first(where:{ self == $0.uint8 }) { 
         return "\(item)"
       } 
        return "\(OpCode.NOP)"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...