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

Lan*_*ard 1 swift

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

func getStride(_ type: T.Type) {
  return MemoryLayout<type>.stride
}
Run Code Online (Sandbox Code Playgroud)

但这没用

我希望能够这样称呼它:

getStride(Bool) //=> stride value
Run Code Online (Sandbox Code Playgroud)

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

getStride(Bool.self)
Run Code Online (Sandbox Code Playgroud)

想知道是否有可能这样。

Mar*_*n R 5

您必须定义一个通用函数,然后才能MemoryLayout<T>使用传递给该函数的相同类型进行引用:

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

print(getStride(Bool.self)) // 1
print(getStride(Double.self)) // 8
Run Code Online (Sandbox Code Playgroud)