Sự khác biệt giữa ‘as?’ , ‘as!’ và ‘as’ trong Swift là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
81 lượt xem
Swift middle
  • T Swift 1.2 trở đi, as chỉ có thể được sử dụng để upcasting (hoặc phân biệt) và đối sánh mẫu (pattern matching):
    // 'as' for pattern matching
    switch item {
    case let obj as MyObject:
       // this code will be executed if item is of type MyObject
    case let other as SomethingElse:
       // this code will be executed if item is of type SomethingElse
    ...
    }
  • as? tạo ra một giá trị tùy chọn, là giá trị nếu nó có thể được ép sang kiểu được chỉ định hoặc nil nếu nó không thể.
  • as! không tạo ra một tùy chọn, nó chỉ tạo ra một giá trị của kiểu được chỉ định và nếu quá trình ép kiểu không thành công, nó sẽ hủy bỏ chương trình. Nói foo as! SomeType về cơ bản giống như cách nói (foo as? SomeType)! (ngoại trừ bạn nhận được thông báo lỗi tốt hơn).

Bạn chỉ nên sử dụng as! nếu bạn chắc chắn 100% việc ép kiểu sẽ thành công (vì nếu bạn sai, toàn bộ chương trình sẽ bị hủy bỏ - abort).

{{login.error}}