Протокол «UnsignedInteger» может использоваться только как ограничение c - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть этот пример, и я хочу работать с динамическим c целочисленным типом без знака в моей структуре.

struct SomeStruct {
  var value: UnsignedInteger

  var sizeOf: Int {
    return sizeof(value)
  }

  func sizeof <T> (_ : T) -> Int {
      return (MemoryLayout<T>.size)
  }

  init(type: Int) {
    switch type {
    case 1:
      self.value = UInt8(1)
    case 2:
      self.value = UInt16(1)
    case 3:
      self.value = UInt32(1)
    case 4:
      self.value = UInt64(1)
    default:
      self.value = UInt8(1)
    }
  }
}

let struct16 = SomeStruct(type: 2)
let struct64 = SomeStruct(type: 4)

print(struct16.sizeOf)
print(struct64.sizeOf)

, но этот код не работает, он не работает с ошибкой компиляции. Протокол 'UnsignedInteger 'может использоваться только как обобщенное c ограничение, потому что оно имеет Self или связанные требования типа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...