Tải bản đầy đủ - 46 (trang)
Bài 4. SỬ DỤNG KIỂU ENUM TRONG LẬP TRÌNH SWIFT

Bài 4. SỬ DỤNG KIỂU ENUM TRONG LẬP TRÌNH SWIFT

Tải bản đầy đủ - 46trang

Sau đó do kiểu của onedirection đã biết, chúng ta có thể viết:



1 onedirection = .West

2. Sử dụng kiểu enum cùng với câu lệnh Swift

Tiếp tục ví dụ trên, khi biến onedirection đã được suy luận kiểu hoặc khi sử dụng trong câu

lệnh Switch, chúng ta hoàn toàn có thể lược bớt phần tên kiểu enum và chỉ giữ lại tên của thành

viên (member) của kiểu enum đó:



1

2

3

4

5

6

7

8

9

10



switch onedirection {

case .East:

println(“The East”)

case .West:

println(“The West”)

case .South:

println(“The South”)

case .North:

println(“The North”)

}



Trong câu lệnh Switch thì mọi trường hợp đều phải được xem xét. Do vậy nếu như thiếu bạn

không liệt kê đầy đủ mọi trường hợp, cần phải thêm “default”:



1

2

3

4

5

6



switch onedirection {

case .West:

println(“This is the West”)

default:

println(“Other cases”)

}



3. Giá trị liên hợp trong kiểu enum

Như ở phần 3 chúng ta đã đề cập thì trong kiểu enum ta có thể khai báo 1 loại cú pháp giống

như Macro trong C++. Đây cũng chính là kiểu giá trị liên hợp (associated value) sử dụng trong

enum Swift. Mục đích của nó chính là khai báo mỗi thành viên như là một tập các giá trị có

mối quan hệ với nhau. Cùng theo dõi ví dụ sau:



17



1

2

3

4



enum BarCode {

case UPCA(Int, Int, Int, Int)

case QRCode(String)

}



Kiểu enum phía trên khai báo 2 thành viên tương ứng với bar code 1D và QR code (2D).

Thành viên thứ nhất chính là giá trị liên hợp bao gồm 4 số nguyên, trong khi đó thành viên thứ

2 cũng chính là giá trị liên hợp tuy nhiên lại chỉ bao gồm duy nhất 1 chuỗi ký tự.

Để có thể tạo ra một bar code mới, chúng ta sử dụng cú pháp sau:



1 var barcode = BarCode.UPCA(1, 59000, 10000, 8)

sau đó có thể gán:



1 barcode = BarCode.QRCode(“This is a URL”)

Khi sử dụng trong câu lệnh Switch, để dùng những giá trị liên hợp thì ta cần phải khai báo

hằng hay biến tương ứng:



1

2

3

4

5

6



switch barcode {

case BarCode.UPCA(let systemNum, let manufacturerNum, let productNum, let checkNum):

println(“Manufacture number is \(manufacturerNum)”)

case BarCode.QRCode(let codedStr):

println(codedStr)

}



Nếu như khai báo mọi giá trị liên hợp cùng là hằng hay biến, chúng ta có thể xài cú pháp rút

gọn như sau:



18



1

2

3

4

5

6



switch barcode {

case let BarCode.UPCA(systemNum, manufacturerNum, productNum, checkNum):

println(“Manufacture number is \(manufacturerNum)”)

case var BarCode.QRCode(codedStr):

println(codedStr)

}



4. Giá trị đơn trong kiểu enum

Khi khai báo theo kiểu enum có thể chỉ định giá trị default cho mọi thành viên (member) của

nó. Giá trị này được chỉ định cho member là những giá trị đơn (raw values). Giá trị đơn cũng

có thể là String, Int, Float, Character… Chẳng hạn:



1

2

3

4

5



enum ASCIIControlCharacter: Character {

case Tab = “\t”

case LineFeed = “\n”

case CarriageReturn = “\r”

}



Nếu như kiểu enum gồm những thành viên có kiểu Int thì những thành viên cách nhau một đơn

vị (hoàn toàn giống với kiểu enum truyền thống):



1 enum Planet: Int {

2 case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune

3}



Với khai báo trên, Planet.Venus sẽ có giá trị là 2.

Để truy cập giá trị đơn, chúng ta sẽ sử dụng cú pháp sau:



1 let earthsOrder = Planet.Earth.rawValue

Để khởi tạo 1 biến hay hằng enum mới, chúng ta dùng hàm tạo mặc định với giá trị đơn:



19



1 let possiblePlanet = Planet(rawValue: 7)

Tuy nhiên chúng ta cũng cần lưu ý rằng kiểu trả về của hàm tạo này là optional vì dải giá trị

của kiểu enum không nhất thiết chứa tham số đầu vào của hàm này, do vậy cần lưu ý khi sử

dụng để tránh crash chương trình.

5. Khai báo hàm trong kiểu enum

Ở đây mình chỉ nhắc lại về việc khai báo hàm trong kiểu enum. Trong enum, chúng ta có thể

khai báo hàm, và hàm này cũng có thể được gọi từ những member của kiểu enum đó. Chẳng

hạn:



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18



enum Suit {

case Spades, Hearts, Diamonds, Clubs

func simpleDescription() -> String {

switch self {

case .Spades:

return “spades”

case .Hearts:

return “hearts”

case .Diamonds:

return “diamonds”

case .Clubs:

return “clubs”

}

}

}

let hearts = Suit.Hearts

let heartsDescription = hearts.simpleDescription()



6. Tổng kết.

Qua bài viết ngày hôm nay, chúng ta đã học được cách khai báo và sử dụng kiểu enum trong

lập trình Swift. So với kiểu các enum truyền thống thì enum trong Swift đã tiến hoá hơn và trở

nên mềm dẻo, hữu dụng và mạnh mẽ hơn. Đáng chú ý nhất chính là việc nó hỗ trợ kiểu giá trị

liên hợp và khai báo hàm. Trong những bài sau, các tính năng của Swift sẽ lần lượt được thảo

luận chi tiết.



20



Bài 5. [HÀM ĐIỀU KHIỂN] – CẤU TRÚC LẶP TRONG LẬP TRÌNH SWIFT

Chào các bạn, hôm nay chúng ta sẽ tìm hiểu về cấu trúc lặp trong lập trình Swift, cách hoạt

động và cách dùng của những hàm điều khiển căn bản trong Swift.

Vòng lặp là 1 mã lệnh mà trong đó chương trình sẽ được thực hiện lặp đi lặp lại nhiều lần cho

đến khi nó thỏa mãn 1 điều kiện nào đó.

1. Vòng lặp for

Cú pháp:



1 for ;; {

2







3}







: khai báo và gán thêm giá trị cho biến đếm







: điều kiện để có thể dừng vòng lặp







: thay đổi giá trị biến đếm



Ví dụ:



1 for var i = 0; i < 5; ++i { //khai báo biến đếm i có giá trị 0; điều kiện để vòng lặp thực hiện là biến i bé hơn 5; sau mỗi lần thực hiện, biến

2



println("i = \(i)") //in giá trị i ra màn hình sau mỗi lần vòng lặp thực hiện



3 }



2. Vòng lặp for-in

Vòng lặp for-in thường được dùng khi biết trước về số lần lặp. Vòng lặp for-in sẽ sử dụng một

biến đại diện cho từng vị trí tương ứng tại thời điểm lặp để có thể lấy ra giá trị bên trong của

đối tượng (mảng, từ điển…).



21



Cú pháp



1 for in <đối tượng> {

2







3}



1

2







: sẽ đại diện cho phần tử có những vị trí tương ứng tại một thời điểm lặp







<đối tượng>: nó có thể là một mảng, một từ điển hay một dãy số cho trước. Giả dụ:



//In các số lần lượt từ 1 đến 9 ra màn hình

for i in 1...9 {

println("Số i = \(i)")



3

4



}



5

6 //In các giá trị trong mảng ra màn hình

7 var mang = [10,11,12,13,14,15]

8 for i in mang {

9



println(i)



10 }

11

12

13

14



//In giá trị các key trong từ điển

var tudien = ["Tháng 1": 3500, "Tháng 2": 3150, "Tháng 3": 3220, "Tháng 4": 4000]

for (x,y) in tudien {



15



println("Thu nhập trong \(x) là \(y)")







Tuỳ từng trường hợp mà chúng ta có thể dùng for hay for-in, tuy nhiên hầu hết khi

chúng ta làm việc với Array/Dictionary thì đều sử dụng for-in.



22



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Bài 4. SỬ DỤNG KIỂU ENUM TRONG LẬP TRÌNH SWIFT

Tải bản đầy đủ ngay(46 tr)

×