Các kiểu dữ liệu Swift (Với các ví dụ)

Trong hướng dẫn này, bạn sẽ tìm hiểu về các kiểu dữ liệu khác nhau mà ngôn ngữ lập trình Swift hỗ trợ và sử dụng nó trong khi tạo một biến hoặc một hằng số.

Kiểu dữ liệu là kiểu dữ liệu (giá trị) mà một biến hoặc hằng số có thể lưu trữ trong đó. Ví dụ, trong bài viết Swift Variables and Constants, bạn đã tạo một biến và một hằng số để lưu trữ dữ liệu chuỗi trong bộ nhớ.

Dữ liệu này có thể là một văn bản / chuỗi ("Xin chào") hoặc một số (12,45) hoặc chỉ các bit (0 & 1). Việc xác định kiểu dữ liệu đảm bảo chỉ lưu trữ kiểu dữ liệu đã xác định.

Hãy xem xét một kịch bản:

Giả sử bạn muốn tạo một trò chơi. Vì hầu hết các trò chơi đều hiển thị điểm số cao và tên người chơi sau khi trò chơi hoàn thành, bạn cần lưu trữ hai dữ liệu này cho trò chơi của mình.

Điểm cao là một số (ví dụ 59) và tên của người chơi là một chuỗi (ví dụ: Jack). Bạn có thể tạo hai biến hoặc hằng số để lưu trữ dữ liệu.

Trong Swift, điều này có thể được thực hiện bằng cách khai báo các biến và kiểu dữ liệu là:

 var highScore: Int = 59 var playerName: String = "Jack"

Ở đây, chúng tôi đã khai báo biến highScore thuộc loại Intlưu trữ giá trị 59. Và, biến playerName thuộc loại Stringlưu trữ giá trị Jack.

Tuy nhiên, nếu bạn làm như thế này:

 var highScore: Int = "Jack"

Bạn sẽ gặp lỗi thời gian biên dịch cho biết không thể chuyển đổi giá trị của kiểu 'Chuỗi' thành kiểu được chỉ định 'Int' .

Đó là do bạn đã khai báo điểm cao để lưu trữ giá trị số nguyên nhưng lại đặt chuỗi trong đó. Lỗi này đảm bảo rằng điểm cao chỉ có thể lưu trữ một số chứ không phải tên của người chơi.

Kích thước của một loại dữ liệu

Một phần quan trọng khác của kiểu dữ liệu là kích thước của nó. Điều này chỉ định kích thước của dữ liệu có thể được lưu trữ trong một biến hoặc hằng số nhất định.

Một Loại của kích thước được đo về bit và có thể lưu trữ các giá trị tối đa 2 bit . Nếu bạn không biết về Bit, hãy nghĩ về nó như một giá trị bằng 0 hoặc 1.

Vì vậy, đối với Type size = 1 bit, nó chỉ có thể lưu trữ tối đa, 2 1 = 2, hai giá trị: hoặc 0 hoặc 1. Vì vậy, hệ thống 1 bit cho chương trình chữ cái có thể hiểu 0 là a / 0 và 1 là b / 1,0.

 0 -> a hoặc 0 1 -> b hoặc 1

Tương tự như vậy, hệ thống hai bit có thể lưu trữ tối đa 2 2 = 4 giá trị: (00,01,10,11) và mỗi kết hợp có thể được biểu diễn dưới dạng:

 00 -> a hoặc 0 01 -> b hoặc 1 11 -> c hoặc 2 10 -> d hoặc 3

Đối với một hệ thống bit, nó có thể lưu trữ tối đa 2 n giá trị trong đó.

Các kiểu dữ liệu Swift

Các loại dữ liệu phổ biến nhất được sử dụng trong swift được liệt kê dưới đây:

Bool

  • Biến / Hằng số được khai báo kiểu Bool chỉ có thể lưu trữ hai giá trị hoặc truehoặc false.
  • Giá trị mặc định : false
  • Nó thường được sử dụng khi bạn làm việc với if-elsecâu lệnh. Swift if else bài viết trình bày chi tiết về nó.

Ví dụ 1: Kiểu dữ liệu Boolean

 let result:Bool = true print(result)

Khi bạn chạy chương trình, đầu ra sẽ là:

 thật

Số nguyên

  • Biến / Hằng số được khai báo kiểu số nguyên có thể lưu trữ số nguyên cả số dương và số âm, bao gồm cả số 0 mà không có thành phần phân số.
  • Giá trị mặc định : 0
  • Kích thước : 32/64 bit tùy thuộc vào loại nền tảng.
  • Phạm vi : -2,147,483,648 đến 2,147,483,647 (nền tảng 32 bit)
    -9223372036854775808 đến 9223372036854775807 (nền tảng 64 bit
  • Có nhiều biến thể của kiểu Số nguyên UInt, tức là Int8, Int16v.v. Loại phổ biến nhất mà bạn sử dụng là Int.
  • Nếu bạn có một yêu cầu để xác định kích thước / loại nguyên một biến / hằng số có thể giữ, bạn có thể lưu nó đặc biệt hơn là sử dụng UInt, Int8, Int16vv mà chúng ta sẽ khám phá dưới đây.

Ví dụ 2: Kiểu dữ liệu số nguyên

 var highScore:Int = 100 print(highScore) highScore = -100 print(highScore) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 100-100 

Trong ví dụ trên, chúng tôi đã khai báo một biến kiểu highScore Int. Đầu tiên, chúng tôi gán nó với giá trị 100 để print(highScore)xuất ra 100 trên màn hình.

Sau đó, chúng tôi đã thay đổi giá trị thành -100 bằng cách sử dụng toán tử gán highScore = -100, print(highScore)kết quả là -100 trên màn hình.

Hãy cùng khám phá một số biến thể của Intkiểu trong Swift.

Int8

  • Biến thể của loại Số nguyên có thể lưu trữ cả số nhỏ âm và dương.
  • Giá trị mặc định : 0
  • Kích thước : 8 bit
  • Phạm vi : -128 đến 127

Một Int8số nguyên có thể lưu trữ tổng cộng 2 8 = (256) giá trị trong đó. tức là nó có thể lưu trữ các số từ 0 đến 255 phải không?

Ừ bạn đúng rồi đó. Nhưng vì, Int8bao gồm cả số dương và số âm, nên chúng tôi có thể lưu trữ các số từ -128 đến 127, bao gồm cả 0 có tổng là 256 giá trị hoặc số.

 var highScore:Int8 = -128//ok highScore = 127 //ok highScore = 128 // error here highScore = -129 //error here 

Bạn cũng có thể tìm ra giá trị cao nhất và thấp nhất mà một kiểu có thể lưu trữ bằng cách sử dụng .minvà tích .maxhợp trong các hàm Swift.

Ví dụ 3: Kiểu dữ liệu Int8 tối đa và tối thiểu

 print(Int8.min) print(Int8.max) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 -128 127

UInt

  • Biến thể của kiểu Số nguyên được gọi là UInt (Số nguyên không dấu) chỉ có thể lưu trữ các số không dấu (dương hoặc 0).
  • Giá trị mặc định : 0
  • Kích thước : 32/64 bit tùy thuộc vào loại nền tảng.
  • Phạm vi : 0 đến 4294967295 (nền tảng 32 bit)
    0 đến 18446744073709551615 (nền tảng 64 bit)

Ví dụ 4: Kiểu dữ liệu UInt

 var highScore:UInt = 100 highScore = -100//compile time error when trying to 

Đoạn mã trên sẽ cung cấp cho bạn lỗi thời gian biên dịch vì Số nguyên chưa được ký chỉ có thể lưu trữ giá trị 0 hoặc giá trị dương. Cố gắng lưu trữ giá trị âm trong Số nguyên chưa được ký sẽ gây ra lỗi cho bạn.

Phao nổi

  • Biến hoặc Hằng được khai báo kiểu float có thể lưu trữ số với dấu thập phân hoặc phân số.
  • Giá trị mặc định : 0.0
  • Kích thước : 32 bit số dấu phẩy động.
  • Phạm vi : 1,2 * 10 -38 đến 3,4 * 10 38 (~ 6 chữ số)

Ví dụ 5: Kiểu dữ liệu float

 let highScore:Float = 100.232 print(highScore) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 100.232

Gấp đôi

  • Biến / Hằng được khai báo kiểu Double cũng lưu trữ số với dấu thập phân hoặc phân số dưới dạng Float nhưng dấu thập phân lớn hơn hỗ trợ Float.
  • Giá trị mặc định : 0.0
  • Size: 64-bit floating point number. (Therefore, a variable of type Double can store number with decimal or fraction points larger than Float supports)
  • Range: 2.3*10-308 to 1.7*10308 (~15 digits)

Example 6: Double data type

 let highScore:Double = 100.232321212121 print(highScore) 

When you run the program, the output will be:

 100.232321212121

Character

  • Variables/Constants declared of Character type can store a single-character string literal.
  • You can include emoji or languages other than english as an character in Swift using escape sequence u(n) (unicode code point ,n is in hexadecimal).

Example 7: Character data type

 let playerName:Character = "J" let playerNameWithUnicode:Character = "u(134)" print(playerName) print(playerNameWithUnicode) 

When you run the program, the output will be:

 J Ĵ

String

  • Variables or Constants declared of String type can store collection of characters.
  • Default Value: "" (Empty String)
  • It is Value type. See Swift value and Reference Type .
  • You can use for-in loop to iterate over a string. See Swift for-in loop.
  • Swift also supports a few special escape sequences to use them in string. For example,
    • (null character),
    • \ (a plain backslash ),
    • (a tab character),
    • v (a vertical tab),
    • (carriage return),
    • " (double quote),
    • \' (single quote), and
    • u(n) (unicode code point ,n is in hexadecimal).

Example 8: String data type

 let playerName = "Jack" let playerNameWithQuotes = " "Jack "" let playerNameWithUnicode = "u(134)ack" print(playerName) print(playerNameWithQuotes) print(playerNameWithUnicode) 

When you run the program, the output will be:

 Jack "Jack" Ĵack 

See Swift characters and strings to learn more about characters and strings declaration, operations and examples.

In addition to this data types, there are also other advanced data types in Swift like tuple, optional, range, class, structure etc. which you will learn in later chapters.

Things to remember

1. Since Swift is a type inference language, variables or constants can automatically infer the type from the value stored. So, you can skip the type while creating variable or constant. However you may consider writing the type for readability purpose but it’s not recommended.

Example 9: Type inferred variable/constant

 let playerName = "Jack" print(playerName) 

Swift compiler can automatically infer the variable to be of String type because of its value.

2. Swift is a type safe language. If you define a variable to be of certain type you cannot change later it with another data type.

Ví dụ 10: Swift là một loại ngôn ngữ an toàn

 let playerName:String playerName = 55 //compile time error 

Đoạn mã trên sẽ tạo ra lỗi vì chúng tôi đã chỉ định rằng biến playerName sẽ là một Chuỗi. Vì vậy, chúng tôi không thể lưu trữ một số nguyên trong đó.

thú vị bài viết...