Значение типа "Сканер" не имеет члена "scanHexInt32"

Когда я компилирую свой проект Swift для Mac, он компилируется нормально, но когда я компилирую тот же код в Ubuntu 16.04, я получаю следующую ошибку.

value of type 'Scanner' has no member 'scanHexInt32'
        if Scanner(string: self).scanHexInt32(&value) {
           ^~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
Foundation.Scanner:8:17: note: did you mean 'scanHexInt'?
    public func scanHexInt(_ result: UnsafeMutablePointer<UInt32>) -> Bool

В чем будет причина?

1 ответ

Для этого нужны разные флаги:

    import Foundation

    public extension String {
      public func scanHex() -> UInt32? {
        var value = UInt32(0)
        #if os(Linux)
        if Scanner(string: self).scanHexInt(&value) {
          return value
        } else {
          return nil
        }
        #else
        if Scanner(string: self).scanHexInt32(&value) {
          return value
        } else {
          return nil
        }
        #endif
      }
    }

    if let x = "0x100".scanHex() {
      print("scanned:", x)
    } else {
      print("scan failed")
    }

Этот main.swift был протестирован как на Mac / Linux.

Другие вопросы по тегам