Trong Xcode 8 với Swift 3 beta 6 không có chức năng sizeof(). Nhưng nếu bạn muốn, bạn có thể xác định một cho nhu cầu của bạn. Hàm sizeof mới này hoạt động như mong đợi với một mảng. Điều này là không thể với hàm sizein được xây dựng cũ.
let bb: UInt8 = 1
let dd: Double = 1.23456
func sizeof <T> (_ : T.Type) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ : T) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ value : [T]) -> Int
{
return (MemoryLayout<T>.size * value.count)
}
sizeof(UInt8.self) // 1
sizeof(Bool.self) // 1
sizeof(Double.self) // 8
sizeof(dd) // 8
sizeof(bb) // 1
var testArray: [Int32] = [1,2,3,4]
var arrayLength = sizeof(testArray) // 16
Bạn cần tất cả các phiên bản của hàm sizeof, để lấy kích thước của biến và để có được kích thước chính xác của kiểu dữ liệu và của mảng.
Nếu bạn chỉ xác định hàm thứ hai, thì sizeof (UInt8.self) và sizeof (Bool.self) sẽ dẫn đến "8". Nếu bạn chỉ định nghĩa hai hàm đầu tiên, thì sizeof (testArray) sẽ dẫn đến "8".
Nguồn
2016-08-19 12:27:12
hoặc 'let anIntSize = sizeofValue (anInt)' – user102008