> On Jun 29, 2016, at 4:59 PM, Xiaodi Wu <[email protected]> wrote: > > There must be a typo in these examples. `MemoryLayout(x.dynamicType).size` > perhaps?
Dunno if it’s intentional or not. Hooman Mehr already suggested we add instance properties: > On Jun 28, 2016, at 8:27 PM, Hooman Mehr via swift-evolution > <[email protected]> wrote: > > How about we get rid of dynamicType by adding instance level properties as > well: > > public struct MemoryLayout<T> { > > public static var size: Int { return sizeof(T) } > public static var interval: Int { return strideof(T) } > public static var alignment: Int { return alignof(T) } > > public var size: Int { return sizeof(T) } > public var interval: Int { return strideof(T) } > public var alignment: Int { return alignof(T) } > > init(_ : @autoclosure () -> T) {} > } > > print(MemoryLayout<Int>.size) // 8 > print(MemoryLayout<Int>.interval) // 8 > print(MemoryLayout<Int>.alignment) // 8 > > let x = 8 > > print(MemoryLayout(x).size) // 8 > print(MemoryLayout(x).interval) // 8 > print(MemoryLayout(x).alignment) // 8 Doing that makes that list look like this: MemoryLayout<Int8>.size // 1, correct MemoryLayout(Int8.self).size // 1, almost certainly correct MemoryLayout(Int8).size // 1, almost certainly correct MemoryLayout(0 as Int8).size // 1, correct MemoryLayout<Int8.Type>.size // 8, correct MemoryLayout(Int8.Type.self).size // 8, correct, but is oddly worded MemoryLayout(Int8.Type).size // 8, correct I thought of something else… if we had a way to intentionally trigger a compile-time error in code that’s otherwise correct, we could define the `init(_: T.self)` function like this: extension MemoryLayout { public init(_ : T.Type) { #throwErrorIfReached("Incorrect Usage... NOCOMPILINGFORYOU!!!") } } Then the list of statements which compile would be much simpler: let x: Int8 = 0 MemoryLayout<Int8>.size // 1, correct and unambiguous MemoryLayout(x).size // 1, correct and unambiguous (assuming the instance properties are added) MemoryLayout<Int8.Type>.size // 8, correct and unambiguous But that’s its own proposal, and one I’m not sure is worth making. - Dave Sweeris
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
