Kiểu trả về ‘Never’ là gì? Khi nào sử dụng ‘Never’ thay vì ‘Void’?

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

Void

Void bản thân nó là một kiểu trả về là một bộ giá trị không có phần tử nào. Bạn có thể sử dụng Void và () thay thế cho nhau.

Hãy xem những ví dụ này,

  1. func yourFunc (){} Đây là một hàm không có kiểu trả về, về cơ bản trả về một bộ giá trị không có phần tử nào, có thể được viết là ()
  2. func yourFunc () -> Void{} Hàm thông báo rõ ràng cho trình biên dịch về kiểu trả về void
  3. func yourFunc () -> (){} Kiểu trả về này của () hiển thị giống như kiểu void. () chỉ ra một bộ dữ liệu không có phần tử nào

Never

Kiểu trả về Never thông báo cho trình biên dịch rằng không cần phải trả về một tuple () trống. Ngoài ra, hàm với kiểu trả về never được sử dụng cho điểm thoát của quá trình thực thi hiện tại như crash, fatal error (lỗi nghiêm trọng), abort hoặc exit.

public func abortVoid() -> Void {
   fatalError()
} 

public func abortNever() -> Never {
   fatalError()
} 


func bar1() -> Int {
   if true {
      abortVoid() // ERROR: Missing return in a function expected to return 'Int'
   } else {
      return 1
   }
} 

func bar2() -> Int {
   if true {
      abort() // No ERROR, but compiler sees it returns Never and warns:
      return 2 // Will never be executed
   } else {
      return 1
   }
}
{{login.error}}