Trong Xcode 8 với Swift 3 beta 6, không có hàm 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. Tin tốt là, hàm sizeof mới này hoạt động như mong đợi với mảng của bạn.
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] = [2000,400,5000,400]
var arrayLength = sizeof(testArray) // 16
Bạn cần tất cả các phiên bản của hàm sizeof, để nhận được kích thước của biến và để có được kích thước chính xác của loại dữ liệu và của một 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:43:55
Tôi cần độ dài mảng theo byte. Mã của bạn không biên dịch. – Darx
@Darx: Xem câu trả lời cập nhật. –
Cảm ơn bạn. Làm việc và tôi hạnh phúc. Đã lãng phí 2 giờ ... nhưng bây giờ nó hoạt động. :) – Darx