Мне известно, что необязательные значения "под капотом" представлены как Optional
enum ...
public enum Optional<Wrapped> {
case none
case some(Wrapped)
}
В некоторой степени это скрыто отразработчики (по уважительной причине) и, следовательно, при печати опций поведение по умолчанию (в Swift 4) состоит в том, чтобы пропустить часть Optional
и просто вывести либо nil
, либо только одно значение.
let longFormDefinedOptionalInt: Optional<Int> = nil
let shortFormDefinedOptionalInt: Int? = 99
print("\(longFormDefinedOptionalInt)") // Prints "nil" and NOT "Optional.none"
print("\(longFormDefinedOptionalInt)") // Prints "99" and NOT "Optional.some(99)"
Есть лив любом случае получите полное и истинное описание дополнительного, то есть либо «Optional.none», либо «Optional.some (99)»
Я уверен, что это возможно, потому что XCTest делает это каким-то образом при печати сообщений об ошибках,например ...
XCTAssertEqual(Int("99"), 11)
Ошибка XCTAssertEqual: ("Необязательно (99)") не равно ("Необязательно (11)")