/ / Lập trình ios / Comments (2)

Collection Types – mảng (Array) trong Swift

Bài trước mình đã giới thiệu với các bạn về các cách xử lý chuỗi và ký tự trong Swift.Bài tiếp theo trong loạt bài về Swift cơ bản mình sẽ giới thiệu cho các bạn về mảng(Array) và từ điển(Dictionary) trong ngôn ngữ này.Đối với bất kỳ ngôn ngữ nào thì mảng là kiểu dữ liệu rất quan trọng và được sử dụng rất nhiều trong quá trình làm việc.Trong Swift cũng vậy nó cung cấp cho chúng ta hai kiểu là mảng(Array) và từ điển(Dictionary), để lưu trữ tập hợp của các giá trị. Trong swift rất chặt chẽ trong việc khai báo và sử dụng kiểu dữ liệu lên mảng và từ điển cũng có những khác biệt trong cách khai báo và sử dụng.Trong bài này mình sẽ giới thiệu cho các bạn về mảng trong Swift.

Collection Types

Collection Types – mảng (Array) trong Swift

Collection Types – mảng trong Swift

– Cũng như các ngôn ngữ lập trình khác thì mảng trong swift dùng để lưu trữ các mảng giá trị,và các key của mảng là các số tự nhiên dạng tuần tự,nó cũng giống với mảng tuần tự trong ngôn ngữ lập trình PHP,trong mảng này có thể chứa nhiều giá trị trùng lặp.Một điểm cần lưu ý đó là các giá trị trong mảng cần có cùng 1 kiểu,chúng ta không thể khai báo hỗn tạp các giá trị trong mảng vừa là chuỗi vừa là số…chính vì vậy khi các bạn làm việc với ngôn ngữ này cần nắm vững các kiểu dữ liệu của nó.

Cách khai báo mảng trong Swift

– Trong swift có nhiều cách để khai báo 1 mảng:
+ cú pháp:

//cú pháp 1: khai báo đầy đủ
let arr1 : Array<kiểu dữ liệu> = [các giá trị]
//cú pháp 2:
let arr2 : [kiểu dữ liệu] = [các giá trị]
//cú pháp 3: rút gọn,trình biên dịch tự gắn kiểu cho mảng chính là kiểu của các giá trị
let arr3 = [các giá trị]

+ Ví dụ:

//Ví dụ mảng kiểu chuỗi:
let arr1 : Array<String> = ["Học","Swift","Cơ bản"]
let arr2 : [String] = ["Học","Swift","Cơ bản"]
let arr3 = ["Học","Swift","Cơ bản"]

//Ví dụ mảng kiểu số nguyên
let arr1 : Array<Int> = [1, 2, 3]
let arr2 : [Int] = [1, 2, 3]
let arr3 = [1, 2, 3]

– Các bạn thấy các cách khai báo ở trên đều giống nhau cả, như đã nói ở trên trong Swift rất chặt chẽ trong việc khai báo và sử dụng kiểu dữ liệu lên các bạn đã khai báo kiểu dữ liệu cho mảng như thế nào thì giá trị trong mảng cũng phải mang kiểu dữ liệu đó,và các kiểu dữ liệu của các giá trị trong mảng phải giống nhau,ví dụ:

let arr1 : Array<Int> = ["Học","Swift","Cơ bản"]
let arr2 : Array<Int> = ["Học", 1, 2]
let arr2  = ["Học", 1, 2]

– Cả 3 kiểu khai báo ở trên trình biên dịch đều báo lỗi do các dữ liệu không phù hợp với kiểu dữ liệu khai báo

Các thao tác hay sử dụng với mảng

In từng giá trị trong mảng

– Để truy cập vào các phần tử của mảng chúng ta truy cập vào chính key của mảng đó, key của mảng bắt đầu bằng vị trí 0,ví dụ:

//Ví dụ mảng kiểu chuỗi:
let arr1 : Array<String> = ["Học","Swift","Cơ bản"]
println(arr1[0]) //kết quả là "Học"
println(arr1[1]) //kết quả là "Swift"
println(arr1[2]) //kết quả là "Cơ bản"

Duyệt các phần tử mảng

– Cũng như hầu hết các ngôn ngữ lập trình khác để duyệt tất cả các phần tử trong mảng ta sử dụng vòng lặp For,ví dụ:

//Ví dụ mảng kiểu chuỗi:
let arr1 : Array<String> = ["Học","Swift","Cơ bản"]
for value in arr1 {
println(value);
}

Nếu bạn cần sử dụng cả vị trí(key) của mảng thì sử dụng hàm toàn cục enumerate để thay cho việc duyệt qua mảng. Hàm enumerate trả về một bộ – tuple – cho từng phần tử trong mảng gồm các chỉ số và giá trị cho phân tử đó,ví dụ:

for (key, value) in enumerate (arr1) {
 println("Phần tử ở vị trí \(key) có giá trị là: \(value)")
}

+ Với vòng lặp trên trình biên dịch sẽ trả về 3 times,hay nói cách khác nó sẽ lặp 3 lần,mỗi 1 lần lặp sẽ lấy từng phần tử trong mảng

Các thao tác hay sử dụng trên mảng

– Để cộng các mảng ta sẽ sử dụng dấu + như việc nối chuỗi,ví dụ:

//Ví dụ mảng kiểu chuỗi:
let arr1 : Array<String> = ["Học","Swift","Cơ bản"]
let arr2 : Array<String> = ["Tại","Hocphp.info"]
let arr3 = arr1 + arr2
//kết quả của mảng arr3 là: ["Học","Swift","Cơ bản", "Tại","Hocphp.info"]

– Để thêm 1 phần tử vào 1 vị trí nào đó trong mảng ta sử dụng hàm insert("Giá trị", atIndex: vị trí),ví dụ:

var arr1 : Array<String> = ["Học","Swift","Cơ bản"]
arr1.insert("Tại", atIndex: 2) //chèn giá trị vào vị trí thứ 2 của mảng
//kết quả sẽ là: ["Học","Swift", "Tại","Cơ bản"]

– Thêm 1 phần tử vào cuối mảng ta sử dụng hàm append("Giá trị"),ví dụ:

var arr1 : Array<String> = ["Học","Swift","Cơ bản"]
arr1.append("Tại Hocphp.info") //chèn giá trị vào cuối mảng
//kết quả mảng arr1 sẽ là: ["Học","Swift","Cơ bản", "Tại Hocphp.info"]

– Để xoá 1 phần tử nào đó trong mảng ta sử dụng hàm removeAtIndex(vị trí muốn xoá),ví dụ:

var arr1 : Array<String> = ["Học","Swift","Cơ bản"]
arr1.removeAtIndex(2) //Xoá phần tử ở vị trí thứ 2 mảng
//kết quả arr1 sẽ là: ["Học","Swift"]

– Để thay thế 1 loạt các giá trị gần nhau trong mảng ta có thể sử dụng cú pháp subscript,ví dụ:

var arr1 : Array<String> = ["Học","Swift","Cơ bản", "Tại", "Hocphp.info"]
arr1[1...3] = ["1", "2", "3"] //thay đổi giá trị của phần tử ở vị trí 1 tới vị trí 3
//kết quả mảng arr1 sẽ là: ["Học","1","2, "3", "Hocphp.info"]

– Để đếm các số phần tử có trong mảng ta sử dụng hàm count cũng như việc đếm các ký tự trong chuỗi,ví dụ:

var arr1 : Array<String> = ["Học","Swift","Cơ bản"]
arr1.count
//kết quả sẽ là: 3

– Kiểm tra mảng có rỗng hay không ngoài việc sử dụng hàm count ta có thể sử dụng hàm isEmpty,ví dụ:

var arr1 : Array<String> = ["Học","Swift","Cơ bản"]
if arr1.isEmpty {
println("Mảng này không có phần tử nào")
}else{
println("Mảng này có phần tử")
}

Tổng kết: Qua bài viết này mình đã giới thiệu những chú ý cũng như cách sử dụng mảng trong lập trình Swift,sang bài tiếp theo chúng ta sẽ cùng tìm hiểu về Từ điển (Dictionary) trong Swift.Ngoài ra các bạn có thể tham khảo thêm tại đây



03/07/2015
Tags:
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

2 Comments

  1. newbie says:
     /  Reply

    admin có tài liệu swift tiếng việt không send cho mình với?thanks

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL