Динамически передать тип в MemoryLayout <T>в Swift - PullRequest
1 голос
/ 17 марта 2019

Я хотел бы создать такую ​​функцию:

func getStride(_ type: T.Type) {
  return MemoryLayout<type>.stride
}

Но это не работает .

Я бы хотел назвать это так:

getStride(Bool) //=> stride value

Если не то, то возможно это:

getStride(Bool.self)

Интересно, возможно ли что-нибудь подобное.

1 Ответ

5 голосов
/ 17 марта 2019

Вы должны определить универсальную функцию , затем вы можете обратиться к MemoryLayout<T> с тем же типом, который был передан функции:

func getStride<T>(_ type: T.Type) -> Int {
    return MemoryLayout<T>.stride
}

print(getStride(Bool.self)) // 1
print(getStride(Double.self)) // 8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...