Mã dưới đây sẽ hoạt động như thế nào đối với các phiên bản Swift khác nhau?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
52 lượt xem
Swift master

Vấn đề:

struct MyStruct {
   private let myMessage = "Hello World"
} 

extension MyStruct {
   func printMyMessage() {
      print(myMessage)
   }
}

Giải thích cách mã trên hoạt động với các phiên bản Swift khác nhau (3, 4)?

Giải pháp:

  • Trong Swift 3, bạn sẽ gặp lỗi compile time:
    // error: 'myMessage' is inaccessible due to 'private' protection level
  • Trong Swift 4, nó sẽ hoạt động tốt. Tại sao? Cải tiến đã được thêm vào Swift 4 là phạm vi kiểm soát private access đã được mở rộng để có thể truy cập từ các phần mở rộng của khai báo đó trong cùng một tệp.
{{login.error}}