Tôi có chút này của Swift code mà dường như không có tác dụng ...Số học con trỏ Swift và dereferencing; chuyển đổi một số mã bản đồ C-like để Swift
// earlier, in Obj C...
typedef struct _Room {
uint8_t *map;
int width;
int height;
} Room;
Một phòng là một phần của một đâm vào một trò chơi roguelike nếu bạn' tò mò. Tôi đang cố gắng viết lại một vài phần trong Swift. Dưới đây là đoạn code mà xuất hiện phá vỡ, và những gì tôi hy vọng tôi đang làm như nhận xét:
let ptr = UnsafePointer<UInt8>(room.map) // grab a pointer to the map out of the room struct
let offset = (Int(room.width) * Int(point.y)) + Int(point.x) // calculate an int offset to the location I am interested in examining
let locationPointer = ptr + offset // pointer advances to point to the offset I want
var pointValue = ptr.memory // What I used to get with *ptr
Cái gì là sai ở đây vì các xét nghiệm đơn giản cho thấy giá trị của pointValue không phải là những gì tôi biết tôi đang nhìn trên bản đồ, có đặt một vị trí rất đơn giản (1, 1) thành một giá trị đã biết. Nó có vẻ khá rõ ràng rằng Swift không phải là làm điều này nhưng nó là một sự chuyển đổi với mục đích học Way of Swift khi tôi biết cú pháp đủ tốt.
Tôi mong đợi lỗi xảy ra trong mã nhanh - vì tất cả đều hoạt động trong phiên bản C mục tiêu. Lỗi đâu rồi?
+1 cho vấn đề rất nêu rõ. – vacawama