Tải bản đầy đủ - 46 (trang)
bài 1. SƠ LƯỢC VỀ NGÔN NGỮ LẬP TRÌNH SWIFT

bài 1. SƠ LƯỢC VỀ NGÔN NGỮ LẬP TRÌNH SWIFT

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

Hãy để ý rằng Swift sẽ không yêu cầu bạn phải khai báo các kiểu giá trị khi dịch chương trình.

Điều này cũng đồng nghĩa với việc các kiểu giá trị đều sẽ được xác định ở running time. Như

vậy nhiều khả năng Swift sẽ chạy không nhanh bằng Objective C vì Objective C đã xác định

kiểu giá trị lúc biên dịch chương trình.

Bạn cũng có thể chỉ định kiểu giá trị khi khai báo biến hay hằng như sau:



1 let explicitDouble: Double = 70

Để thêm value vào string, bạn có thể sử dụng cách sau:



1

2

3

4

5



let apples = 3

let oranges = 5

let appleSummary = "I have \(apples) apples."

let fruitSummary = "I have \(apples + oranges) pieces of fruit

print(fruitSummary)



3. Mảng và từ điển

Bạn có thể tạo ra mảng và từ điển bằng cách dùng ký tự [] như sau:



1

2

3

4

5

6

7



var shoppingList = ["catfish", "water", "tulips", "blue paint"]

shoppingList[1] = "bottle of water"

var occupations = [

"Malcolm": "Captain",

"Kaylee": "Mechanic",

]

occupations["Jayne"] = "Public Relations



Hãy chú ý Objective C dùng ký hiệu {} để tạo ra Dictionary. Với cả hai ngôn ngữ này thì

chúng ta sử dụng chỉ số để truy cập thành phần mảng, dùng key để truy cập vào giá trị của

dictionary.

Để tạo ra được mảng rỗng hay dictionary rỗng, bạn có thể sử dụng ký tự dưới đây:



2



1 let emptyArray = [String]()

2 let emptyDictionary = [String: Float]()



Hay đơn giản hơn:



1 shoppingList = []

2 occupations = [:]

4. Điều khiển trong Swift.

Giống như những ngôn ngữ khác, Swift cũng có những điều khiển If, switch và những điều

khiển lặp như là while, do-while, và for. Điều đặc biệt hơn đó là các dấu ngoặc tròn hoàn toàn

có thể bỏ qua, tuy nhiên những dấu ngoặc nhọn là bắt buộc:



1

2

3

4

5

6

7

8

9

10



let individualScores = [75, 43, 103, 87, 12]

var teamScore = 0

for score in individualScores {

if score > 50 {

teamScore += 3

} else {

teamScore += 1

}

}

print(teamScore)



Với vòng lặp for thì bạn có thể chỉ định dải giá trị lặp như dưới đây:



1 var firstForLoop = 0

2 for i in 0..<4 {

3

firstForLoop += i

4 }

5 println(firstForLoop)



3



Câu lệnh phía trên sẽ in ra giá trị 6 bởi vòng lặp chỉ chạy tới 3. Để cho vòng lặp chạy tới giá trị

cận trên của range, bạn có thể dùng ký hiệu (…) thay vì ..< Điều này có thể là sự mở rộng của

Python bởi Python không cho phép bạn bao gồm cận trên trong vòng lặp for.

Vòng lặp do-while và while trong Swift cũng gần giống như trong những ngôn ngữ lập trình

khác. Sau đây là ví dụ:



1

2

3

4

5

6

7

8

9



var n = 2

while n < 100 {

n=n*2

}

var m = 2

do {

m=m*2

} while m < 100



Để ý rằng ta không cần dùng dấu ngoặc tròn () bên trong biểu thức điều kiện của những vòng

lặp này.

Một khái niệm rất mới mẻ trong Swift đó là Optional. Optional có thể mang những giá trị thực

sự hay bằng nil. Để khai báo 1 biến là optional chúng ta cần thêm dấu hỏi chấm:



1 var optionalString: String? = "Hello"

2 optionalString == nil

Với mỗi giá trị Optional, ta hoàn toàn có thể hạn chế lỗi crash khi lập trình ứng dụng. Xem

đoạn code dưới đây:



1

2

3

4

5



var optionalName: String? = "John Appleseed"

var greeting = "Hello!"

if let name = optionalName {

//-your code goes here

}



Ở đoạn code trên, nếu hằng “name” có giá trị là nil thì đoạn code trong dấu ngoặc nhọn sẽ

không thể được thực hiện. Như vậy nếu như bên trong bạn có một tham chiếu đến “name ” thì

ứng dụng sẽ không crash khi name=nil.



4



Switch trong Swift sẽ là một cải tiến khá lớn. Nó hỗ trợ rất nhiều kiểu dữ liệu (không chỉ là

integer như nhiều ngôn ngữ khác) và còn nhiều phép toán so sánh:



1 let vegetable = "red pepper"

2 switch vegetable {

3

case "celery":

4

let vegetableComment = "Add some raisins and make ants on a log."

5

case "cucumber", "watercress":

6

let vegetableComment = "That would make a good tea sandwich."

7

case let x where x.hasSuffix("pepper"):

8

let vegetableComment = "Is it a spicy \(x)?"

9

default:

10

let vegetableComment = "Everything tastes good in soup."

11 }



Để ý rằng ở đây ta không cần sử dụng lệnh break vì chương trình sẽ nhảy ra khỏi lệnh switch

khi nó thực hiện xong một case. Điều này trái ngược với các ngôn ngữ lập trình khác.

Trên đây là một số quy tắc cơ bản đối với Swift, một ngôn ngữ lập trình mới mẻ được phát

triển bởi Apple mà theo ý kiến chủ quan của mình làm ngôn ngữ lai giữa hai loại “Dynamic

Typing” (Python, PHP, etc.) và “Static Typing” (C/C++/Java, etc.) Chúng ta sẽ cùng tìm hiểu

tiếp về sức mạnh của Swift trong các phần tiếp theo.



5



BÀI 2. CƠ BẢN VỀ NGÔN NGỮ SWIFT (P2)

Ở bài trước chúng ta tìm hiểu khái niệm cơ bản của lập trình swift. Và hôm nay mình sẽ tìm

hiểu 1 số cái mới như hàm (function), closure và lớp (class). Kết thúc bài học hôm nay bạn sẽ

nắm được những điều căn bản của lập trình swift. Bước đầu cảm nhận được sức mạnh và tính

linh hoạt của ngôn ngữ lập trình này.

1. Hàm trong Swift

Hàm trong Swift đã có sự cải tiện cực lớn ,nếu bạn đã ngạc nhiên về cách khai báo hàm khi học

Objective-C thì bạn sẽ càng bất ngờ hơn khi học Swift. Để khai báo hàm bạn cần dùng từ khóa

“func” tương tự như từ khóa “def” trong Python. Và dùng dấu “->” để chỉ ra kiểu giá trị trả về:



1 func greet(name: String, day: String) -> String {

2 return "Hello \(name), today is \(day)."

3}

4 greet("Bob", "Tuesday")”



Còn một khái niệm mới trong Swift là “tuple”. Tuple chính là khái niệm trong lập trình để chỉ

cấu trúc dữ liệu bao gồm nhiều thành phần. Hàm trong Swift cho phép trả về 1 giá trị dưới

dạng Tuple. Và điều này cũng khá là linh hoạt nếu như bạn muốn 1 hàm trả về giá trị nhiều hơn

1:



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17



func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {

var min = scores[0]

var max = scores[0]

var sum = 0

for score in scores {

if score > max {

max = score

} else if score < min {

min = score

}

sum += score

}

return (min, max, sum)

}

let statistics = calculateStatistics([5, 3, 100, 3, 9])

statistics.sum statistics.2



Đặc biệt hơn, đối với tuple bạn hoàn toàn có thể truy cập những giá trị bằng 2 cách đó là sử

dụng chỉ số và sử dụng tên. Đây chính là 1 lợi thế lớn so với kiểu Array thông thường. Tương

tự với C++, Python và 1 số ngôn ngữ khác thì Swift cho phép hàm được khai báo với số lượng

tham số đầu vào có thể thay đổi được. Cụ thể như sau:



6



1

2

3

4

5

6

7

8

9



func sumOf(numbers: Int...) -> Int {

var sum = 0

for number in numbers {

sum += number

}

return sum

}

sumOf()

sumOf(42, 597, 12)



Ở hàm trên, numbers được trình biên dịch ngầm hiểu là có kiểu array, do đó để tìm được giá trị

tổng thì chúng ta có thể lặp qua tất cả giá trị thành viên của array.

Bạn có thể khai báo hàm bên trong bằng 1 hàm khác, hàm trong sẽ có thể truy cập biến được

khai báo ở hàm ngoài. Việc dùng hàm bên trong hàm có ích lợi trong trường hợp hàm của bạn

dài quá hay quá phức tạp. Bạn có thể tổ chức thành những hàm nhỏ và dễ đọc hơn.



1 func returnFifteen() -> Int {

2 var y = 10

3 func add() {

4

y += 5

5 }

6 add()

7 return y

8}

9 returnFifteen()



Trong Swift thì hàm vừa có thể nhận được giá trị đầu vào là hàm khác lại vừa có thể trả về giá

trị là 1 hàm khá. Ví dụ:

Trả về giá trị là 1 hàm



1

2

3

4

5

6

7

8



func makeIncrementer() -> (Int -> Int) {

func addOne(number: Int) -> Int {

return 1 + number

}

return addOne

}

var increment = makeIncrementer()

increment(7)



Nhận giá trị tham số là 1 hàm khác:



7



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

bài 1. SƠ LƯỢC VỀ NGÔN NGỮ LẬP TRÌNH SWIFT

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

×