在Swift中将类型动态传递给MemoryLayout <t>

时间:2019-03-17 08:22:24

标签: swift

我想创建一个像这样的函数:

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

但是doesn't work

我希望能够这样称呼它:

getStride(Bool) //=> stride value

如果不是那样,那么也许是这样:

getStride(Bool.self)

想知道是否有这种可能。

1 个答案:

答案 0 :(得分:5)

您必须定义一个泛型函数,然后可以使用传递给该函数的相同类型来引用MemoryLayout<T>

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

print(getStride(Bool.self)) // 1
print(getStride(Double.self)) // 8