Hướng dẫn lập trình Swift cho người mới bắt đầu
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- Giới thiệu

Đây là tài liệu hướng dẫn Swift cho người mới bắt đầu. Để lập trình Swift bạn phải cài đặt công cụ lập trình XCode. Bạn có thể xem hướng dẫn download và cài đặt tại:
Đây là một tài liệu học nhanh, nếu bạn mới bắt đầu với Swift, cách hướng dẫn là "Từng bước từng bước" vì vậy bạn hãy đọc lần lượt từ trên xuống, tài liệu này sẽ giúp bạn có cái nhìn tổng quan trước khi đi vào các tài liệu chi tiết khác.

2- Tạo Project Swift đầu tiên của bạn

Đây là hình ảnh đầu tiên khi bạn mở XCode
Tạo mới Project:
Chúng ta tạo một Project đơn giản (Ứng dụng Console, là ứng dụng không có giao diện).
Đặt tên cho project là SwiftBasics:
Tạo một thư mục tại Desktop để chứa các Project của bạn.
Đặt tên thư mục sẽ chứa các project của bạn là SwiftTutorials:
Project của bạn đã được tạo ra.
main.swift là một file nguồn đã được tạo ra khi bạn tạo project, bạn cần chạy file nguồn này, nó sẽ ghi ra màn hình console dòng chữ "Hello, world".
Nhấn "Enable" để cho phép chương trình chạy ở chế độ dành cho người lập trình.
Chương trình chạy và in ra dòng chữ "Hello, world".

3- Giải thích các đặc điểm cơ bản của Swift

Bạn cần có một cái nhìn cơ bản về Swift, điều này rất quan trọng.

Top level là gì?

Một dòng lệnh hoặc biểu thức không nằm trong một hàm, khối lệnh hoặc một class nghĩa là nó nằm ở Top-Level.
Top-Level là nơi khai báo sử dụng các thư viện, khai báo biến, hằng số, hàm, class. Theo mặc định các biến và hằng số được khai báo ở mức Top-Level của file nguồn này có thể được sử dụng trong các file nguồn khác trong cùng một module (project).

Bạn không thể viết một biểu thức ở Top-Level, chẳng hạn một biểu thức để gọi hàm. Vì vậy gọi hàm print("Hello") để in ra dòng chữ "Hello" ở Top-Level là không hợp lệ, trừ khi bạn làm việc đó ở file nguồn có tên main.swift (Đây là trường hợp ngoại lệ).

Điểm bắt đầu của chương trình Swift:

Trong một chương trình Swift file main.swift là một file đặc biệt, vì nó chính là điểm bắt đầu để chạy chương trình. Bạn có thể gọi hàm hoặc viết biểu thức ở Top-Level trên file nguồn main.swift, đó là một ngoại lệ dành riêng cho file này.
Tôi tạo ra một file nguồn mới có tên newfile.swift, bạn sẽ thấy một thông báo lỗi khi tôi cố tình viết một biểu thức ở Top-Level.
Các biểu thức cần được đặt trong một hàm hoặc khối lệnh.

4- Thêm mới một file nguồn

Bây giờ bạn cần tạo một file nguồn đầu tiên của bạn, và chạy được nó.
Trên XCode, nhấn phải chuột vào thư mục chứa file nguồn main.swift, chọn "New file".
Nhập vào tên file MyFirstSwift:
MyFirstSwift.swift file is created:
Tôi sửa nội dung của file nguồn vừa được tạo ra, và thêm vào một hàm sayHello(), chú ý chi tiết về hàm sẽ được đề cập ở một phần khác.
MyFirstSwift.swift
import Foundation


// Nội dùng lời chào
var message = "Hello every body"


// Hàm sayHello in ra màn hình một lời chào.
func sayHello()  {
   
   // Gọi hàm print để in ra màn hình một dòng chữ.
   // Chú ý rằng bạn không thể gọi hàm này ở Top-Level.
   print(message)
   
}
Trong Swift điểm bắt đầu để chạy ứng dụng chính là main.swift, vì vậy để test hàm sayHello() bạn cần phải gọi trong main.swift. Sửa code của main.swift:
main.swift
import Foundation


print("Hello, World!")


// Gọi hàm sayHello()
// (Đã được viết trong MyFirstSwift.swift

sayHello()
Chạy project.

5- Các kiểu dữ liệu trong Swift

Kiểu dữ liệu Độ rộng Phạm vi giá trị
Int8 1byte -127 tới 127
UInt8 1byte 0 tới 255
Int32 4bytes -2147483648 tới 2147483647
UInt32 4bytes 0 tới 4294967295
Int64 8bytes -9223372036854775808 tới 9223372036854775807
UInt64 8bytes 0 tới 18446744073709551615
Float 4bytes 1.2E-38 tới 3.4E+38 (~6 digits)
Double 8bytes 2.3E-308 tới 1.7E+308 (~15 digits)

6- Biến và khai báo

Một biến xác định bởi một cái tên cho một khu vực lưu trữ dữ liệu mà chương trình của bạn có thể thao tác. Mỗi biến trong Swift có một kiểu dữ liệu cụ thể, trong đó xác định kích thước và phạm vi giá trị có thể được lưu trữ trong bộ nhớ, và tập hợp các toán tử có thể áp dụng cho biến.
Biến có thể thay đổi giá trị trong quá trình tồn tại của nó trong chương trình. Các biến có giá trị cố định được gọi là các hằng số. Sử dụng từ khóa let để khai báo một biến là hằng số.
Trong swift, bạn có thể khai báo một biến ở Top-Level hoặc là một biến địa phương nằm trong một class hoặc hàm. Với các biến được khai báo ở Top-Level nó có thể được sử dụng tại các file nguồn khác trong cùng một module (Project).
Khai báo một biến:
// Khai báo một biến.
var <tên biến> : <kiểu dữ liệu> ;

// Khai báo một biến đồng thời gián luôn giá trị.
var <tên biến> : <kiểu dữ liệu> = <giá trị>;

// Khai báo một hằng số:
let  <tên hằng số> : <kiểu dữ liệu> = <giá trị>;

// Ví dụ:

// Khai báo một biến
// Tên biến: year
// Kiểu dữ liệu: Int
// Giá trị: 2016
var year: Int = 2016;

// Với các kiểu nguyên thủy (int, double, ..) và String, bạn có thể bỏ qua trong khai báo.
// Swift có thể hiểu được ý định của bạn.

var languageName = "Swift"     // Được hiểu là String
var version = 1.0                     // Được hiểu là Double
var introduced = 2014              // Được hiểu là Int
var isAwesome = true              // Được hiểu là Bool
VariableExample.swift
import Foundation



// Sử dụng từ khoá let để khai báo một hằng số.
// Tên hằng số là COPYRIGHT, có kiểu là String (chuỗi).
// Và giá trị của nó là "o7planning".
// (Đây là một hằng số khai báo ở Top-Level
//  nó cós thể được sử dụng ở các file nguồn khác trong project).
let COPYRIGH: String = "o7planning"


// Sử dụng var để khai báo một biến.
// Tên biến: year
// Kiểu dữ liệu: Int
// Giá trị: 2016
// (Đây là một biến được khai báo ở Top-Level
//  nó có thể được sử dụng ở các file nguồn khác trong project).
var year: Int = 2016



func variableExample()  {


  // Khai báo một hằng số nguyên
  // Bạn không thể gán một giá trị khác cho hằng số.
  let MAX_SCORE = 100;


  // Khai báo một biến số nguyêns
  var score = 90;

  // Khai báo một chuỗi.
  var studentName = "Tom"

  // Ghi các thông tin ra màn hình Console.
  print("Hi \(studentName)")

  print("Your score: \(score)/\(MAX_SCORE)")

  print("Assign new value for studentName")
  // Gán giá trị mới cho biến studentName
  studentName = "Jerry"
  print("Hi \(studentName)")

}
Sửa code của file nguồn main.swift:
main.swift
import Foundation


// Gọi hàm variableExample() định nghĩa trong VariableExample.swift

variableExample()
Kết quả chạy ví dụ:

7- Câu lệnh rẽ nhánh

7.1- Câu lệnh If-else

if là một câu lệnh kiểm tra một điều kiện gì đó trong Swift. Chẳng hạn: Nếu a > b thì làm gì đó ....
Các toán tử so sánh thông dụng:
Toán tử Ý nghĩa Ví dụ
> Lớn hơn 5 > 4 là đúng (true)
< Nhỏ hơn 4 < 5 là đúng (true)
>= Lớn hơn hoặc bằng 4 >= 4 là đúng (true)
<= Nhỏ hơn hoặc bằng 3 <= 4 là đúng (true)
== Bằng nhau 1 == 1 là đúng (true)
!= Không bằng nhau  1 != 2 là đúng (true)
&&  a > 4 && a < 10
|| Hoặc  a == 1 || a == 4
// Cú pháp

if ( điều kiện)  {
// Làm gì đó tại đây.
}
Ví dụ:
// Ví dụ 1:
if ( 5 < 10 )  {
    print( "Five is now less than ten");
}

// Ví dụ 2:
if ( true )  {
    print( "Do something here");
}
Cấu trúc đầy đủ của if - else if - else:
// Chú ý rằng sẽ chỉ có nhiều nhất một khối được chạy
// Chương trình kiểm tra điều kiện từ trên xuống dưới khi bắt gặp một điều
// kiện đúng khối lệnh tại đó sẽ được chạy,
// và chương trình không kiểm tra tiếp các điều kiện
// còn lại trong cấu trúc rẽ nhánh.


// Nếu điều kiện 1 đúng thì  ...
if (điều kiện 1)   {
  // ... làm gì đó khi điều kiện một đúng.
}
// Ngược lại nếu điều kiện 2 đúng thì ....
else if(điều kiện 2 )  {
  // ... làm gì đó khi điều kiện 2 đúng (điều kiện 1 sai).
}
// Ngược lại nếu điều kiện N đúng thì ...
else if(điều kiện N)   {
  // .. làm gì đó khi điều kiện N đúng (các điều kiện ở trên sai)
}
// Ngược lại nếu các điều kiện ở trên đều sai thì
else  {
   // ... làm gì đó tại đây khi mọi điều kiện trên đều sai.
}
IfElseExample.swift
import Foundation


func  ifElseExample()  {
   
 
   // Khai báo một số kiểu UInt32 có giá trị ngẫu nhiên
   // (Hàm arc4random() trả về một giá trị ngẫu nhiên).
   var randomValue: UInt32 = arc4random()
   
   print("Random value = " + String(randomValue))

   // Phép chia cho 200 và lấy số dư.
   // (Được một số từ 0 -> 199).
   var age: UInt32 = randomValue % 200;
 
   print("Your age= " + String(age))
 
   // Kiểm tra nếu age < 80 thì
   if (age < 80)    {
       print("You are pretty young");
   }

   // Ngược lại nếu age nằm trong khoảng 80 và 100 thì
   else if  age >= 80 && age <= 100     {
       print("You are old");
   }      

   // Ngược lại (Các trường hợp còn lại).
   else    {
       print("You are verry old");
   }
   
   
}
Chạy ví dụ:

7.2- Câu lệnh Switch-Case

switch là một câu lệnh để kiểm tra các giá trị của một biến, hãy xem một ví dụ sử dụng switch:
SwitchExample1.swift
import Foundation

func switchExample1()   {

  // Đề nghị người dùng chọn 1 lựa chọn.
  print("Please select one option:")

  print("1 - Play a game")
  print("2 - Play music")
  print("3 - Shutdown computer")
  print("---------------------")


  // Khai báo một số kiểu UInt32 có giá trị ngẫu nhiên
  // (Hàm arc4random() trả về một giá trị ngẫu nhiên).
  var randomValue: UInt32 = arc4random()

  // Chia cho 5 lấy số dư (0, 1, 2, 3, 4)
  var myValue:UInt32 = randomValue%5

  // Khai báo một biến option
  // Ép kiểu của myValue thành kiểu Int.
  // (Giá trị 1, 2, 3, 4, 5).
  var option:Int = Int(myValue) + 1

  // String(option): Ép kiểu biến option về String.
  print("You select: " + String(option))


  // Kiểm tra giá trị của option
  switch (option)   {
   
  case 1:
      print("You choose to play the game");
  case 2:
      print("You choose to play the music");
  case 3:
      print("You choose to shutdown the computer");
  // Các trường hợp khác.
  default:
      print("Nothing to do...");
  }


}
Chạy ví dụ:
Bạn có thể gộp nhiều giá trị vào trong một trường hợp (case):
SwitchExample2.swift
import Foundation


func switchExample2() {
 

   // Khai báo một biến và gán giá trị 3
   var option = 3
 
   print("Option = \(option) ")

   // Kiểm tra giá trị của 'option'.
   switch (option)    {
     
   case 1:
       print("Case 1")
 
   // Trường hợp giá trị là 2,3,4,5
   case 2, 3, 4, 5:
       print("Case 2,3,4,5!!!")
 
   // Trường hợp giá trị trong khoảng 6 -> 10
   case 6...10:
       print("Case 6...10")
     
   // Trường hợp trong khoang 11 -> 20 và là số lẻ
   case 11...20 where option % 2 == 1:
       print("Case 11...20 and odd")
 
   default:
       print("Nothing to do...")
     
   }
 


}
Chạy ví dụ:

Fallthrought:

Nếu bạn đã làm việc với các ngôn ngữ khác như Java, C# bạn có thể nhận thấy cú pháp sử dụng switch có sự khác biệt so với Swift. Trong Swift mỗi khi một trường hợp (case) đúng, khối lệnh của trường hợp (case) này sẽ được thực thi, và các trường hợp khác không được chạy.

Với Java, C# khi một trường hợp đúng khối lệnh của trường hợp đó được chạy, và nếu không có lệnh break thì khối lệnh case (hoặc default) tiếp theo sẽ được thực thi.

Swift đã tự động break sau khi nó thực thi xong khối lệnh case.
Switch thêm vào lệnh fallthrought (Lệnh này không có trong Java, C#), fallthrought nói với chương trình rằng tiếp tục thực thi khối lệnh case (hoặc khối lệnh default) kế tiếp.

Hãy xem một ví dụ minh họa:
SwitchFallthroughExample.swift
import Foundation

func switchFallthroughExample()  {


  var option = 15

  switch (option)   {
   
   
  case 0...10:
     print("Case 0...10")
     // fallthrough: Thực thi trường hợp tiếp theo.
     fallthrough
   
  case 11...20:
     print("Case 11...20")
     // fallthrough: Thực thi trường hợp tiếp theo.
     fallthrough
   
  case 21...30:
     print("Case 21...30")
     // fallthrough: Thực thi trường hợp tiếp theo.
     fallthrough
   
  case 31...40:
     print("Case 31...40")
   
  case 41...50:
     print("Case 41...50")
   
   default:
     print("Default case")
  }

}
Chạy ví dụ:

8- Vòng lặp trong Swift

Vòng lặp được sử dụng để chạy lặp lại một khối lệnh. Nó làm chương trình của bạn thực thi lặp đi lặp lại một khối lệnh nhiều lần, đây là một trong các nhiệm vụ cơ bản trong lập trình.
Swift hỗ trợ 4 loại vòng lặp khác nhau:
  • FOR .. IN
  • FOR
  • WHILE
  • REPEAT WHILE

8.1- Vòng lặp for in

Vòng lặp for .. in dùng để duyệt trên một tập hợp, hoặc một mảng.
Cú pháp:
for <phần tử> in <tập hợp> {
  // Làm gì đó ở đây.
}
Ví dụ dưới đây sử dụng for .. in để duyệt trên một mảng (Khái niệm mảng sẽ được đề cập ở phần tiếp theo).
ForInExample1.swift
import Foundation


func forInExample1()  {
 
 
   // Khai báo một mảng các String có 5 phần tử.
 
   var languages:[String] = ["Java","C#", "C/C++", "Swift", "Ruby"]
 
 
   for lang in languages  {
     
       print("Language " + lang)
   }
 
}
Chạy ví dụ:

8.2- Vòng lặp for

Cấu trúc của vòng lặp FOR:

for ( khởi tạo biến; điều kiện; cập nhập giá trị mới cho biến )   {
     // Thực thi khối lệnh khi điều kiện còn đúng
}
Ví dụ:
// Ví dụ 1:
// Tạo một biến x và gán giá trị ban đầu của nó là 0
// Điều kiện kiểm tra là x < 5
// Nếu x < 5 đúng thì khối lệnh được chạy
// Mỗi lần chạy xong khối lệnh giá trị x lại được cập nhập mới tại đây là tăng x lên 1.
for (var  x = 0;  x < 5 ; x = x + 1)  {
     // Làm gì đó tại đây khi x < 5 đúng.
}


// Ví dụ 2:
// Tạo một biến x và gán giá trị ban đầu của nó là 2
// Điều kiện kiểm tra là x < 15
// Nếu x < 15 đúng thì khối lệnh được chạy
// Mỗi lần chạy xong khối lệnh giá trị x lại được cập nhập mới tại đây là tăng x lên 3.
for (var  x = 2;  x < 15 ; x = x + 3)   {
     // Làm gì đó tại đây khi x < 15 đúng.
}
ForLoopExample.swift
import Foundation


func forLoopExample()   {
 
   print("For loop example");

 
   // Tạo một biến x và gán giá trị ban đầu của nó là 2
   // Điều kiện kiểm tra là x < 15
   // Nếu x < 15 đúng thì khối lệnh được chạy
   // Mỗi lần chạy xong khối lệnh giá trị x lại được cập nhập mới tại đây là tăng x lên 3.
   for (var x = 2; x < 15; x = x + 3)    {
       print( );
       print("Value of x = \(x)");
   }

}
Kết quả chạy ví dụ:

8.3- Vòng lặp while

Cú pháp WHILE:
while (điều kiên)  {
 // Trong khi điều kiện đúng thì thực thi khối lệnh.
}
Ví dụ:
// Khai báo một biến x
var  x = 2;

while ( x < 10)    {
// Làm gì đó tại đây khi x < 10 còn đúng.
// ....
// Cập nhập giá trị mới cho biến x.
x = x + 3;
}
import Foundation

func whileLoopExample()   {
 
   print("While loop example");
 
   // Tạo một biến x và gán giá trị ban đầu của nó là 2
   var x = 2;
 
   // Điều kiện kiểm tra là x < 10
   // Nếu x < 10 đúng thì khối lệnh được chạy.
 
   while (x < 10)  {
     
       print("Value of x = \(x)");
     
       x = x + 3;
   }
 
}
Kết quả chạy ví dụ:

8.4- Vòng lặp repeat-while

Cú pháp của vòng lặp REPEAT-WHILE
// Đặc điểm của vòng lặp REPEAT-WHILE là nó sẽ thực khi khối lệnh ít nhất 1 lần.
// Mỗi lần chạy xong khối lệnh nó lại kiểm tra điều kiện xem có thực thi tiếp không.
repeat   {

// Làm gì đó tại đây
// Sau đó mới kiểm tra tiếp điều kiện xem có tiếp tục chạy khối lệnh này nữa hay không.

} while ( điều kiện)
RepeatWhileExample.swift
import Foundation

func repeatWhileExample()    {
 
   print("Repeat-While loop example")
 
   // Tạo một biến x và gán giá trị ban đầu của nó là 2
   var x = 2

   // Thực hiện khối lệnh.
   // Sau đó kiểm tra điều kiện xem có thực hiện khối lệnh nữa không.
   repeat    {
       print("Value of x = \(x)")
     
       x = x + 3;
     
   } while (x < 10)
 
}
Kết quả chạy ví dụ:

8.5- Lệnh break trong vòng lặp

break là một lệnh nó có thể nằm trong một khối lệnh của một vòng lặp. Đây là lệnh kết thúc vòng lặp vô điều kiện.
LoopBreakExample.swift
import Foundation


func loopBreakExample()    {
 
   print("Break example");
 
 
   // Tạo một biến x và gán giá trị ban đầu của nó là 2
   var x = 2;
 
   while (x < 15)     {
     
       print("----------------------");
       print("x = \(x)");
     
 
       // Kiểm tra nếu x = 5 thì thoát ra khỏi vòng lặp.
       if (x == 5)  {
           break;
       }
 
       // Tăng  x lên 1
       x = x + 1;
       print("After +1, x = \(x)");
     
   }
 
}
Kết quả chạy ví dụ:

8.6- Lệnh continue trong vòng lặp

continue là một lệnh, nó có thể nằm trong một vòng lặp, khi bắt gặp lệnh continue chương trình sẽ bỏ qua các dòng lệnh trong khối phía dưới của continue và bắt đầu một vòng lặp mới.
LoopContinueExample.swift
import Foundation

func loopContinueExample()  {

  print("Continue example")


  // Tạo một biến x và gán giá trị ban đầu của nó là 2
  var x = 2

  while (x < 7) {
   
      print("----------------------")
      print("x = \(x)")

      // % là phép chia lấy số dư
      // Nếu x chẵn, thì bỏ qua các dòng lệnh phía dưới
      // của continue, tiếp tục vòng lặp mới (nếu có).
      if (x % 2 == 0)  {

          // Tăng  x lên 1
          x = x + 1
          continue
      }
      else {

          // Tăng  x lên 1
          x = x + 1
      }
      print("After +1, x = \(x)")
   
  }
}
Kết quả chạy ví dụ:

9- Mảng trong Swift

9.1- Mảng một chiều

Mảng trong Swift về bản chất là một Struct, nó khác với một mảng trong các ngôn ngữ khác như Java, C#,...Mảng của Java, C# có số phần tử cố định và không thể thêm hoặc bớt số phần tử, trong khi đó mảng của Swift lại làm được điều này.
Đây là hình minh họa về mảng một chiều có 5 phần tử, các phần tử được đánh chỉ số từ 0 tới 4.
Cú pháp khai báo mảng một chiều:
// Cách 1:
// Khai báo một mảng, gán luôn các giá trị.
var years: [Int] = [ 2001, 2003, 2005, 1980, 2003 ];

// Hoặc (Swift tự hiểu là Int):
var years = [ 2001, 2003, 2005, 1980, 2003 ];




// Cách 2:
// Khai báo một mảng Float, chỉ định số phần tử, và các giá trị
// (3 phần tử).
var salaries:[Float] = [Float](count: 3,repeatedValue :0 );

// Hoặc:
var salaries  = [Float](count: 3,repeatedValue :0 );


// Cách 3:
// Khai báo một mảng rỗng, không có phần tử nào.
var emptyArray:[Int] = [Int]()
Ví dụ:
ArrayExample1.swift
import Foundation

func arrayExample1()  {
 
 
   // Cách 1:
   // Khai báo một mảng, gán luôn các giá trị.
   var years: [Int] = [ 2001, 2003, 2005, 1980, 2003 ];
 
   print("--- years --- ");
 
 
   // count là một thuộc tính của mảng, nó trả về số phần tử của mảng.
   print("Element count of array years = \(years.count)");
 
 
   // Sử dụng vòng lặp for để in ra các phần tử của mảng.
   for (var i = 0; i < years.count; i = i + 1) {
       print("Element at \(i) =  \(years[i])");
   }
 
   print("--- salaries --- ");
 
 
   // Cách 2:
   // Khai báo một mảng Float, chỉ định số phần tử, và các giá trị
   // (3 phần tử).
   var salaries:[Float] = [Float](count: 3,repeatedValue :0 );
 
 
   // Gán các giá trị mới cho các phần tử.
   salaries[0] = 1000;
   salaries[1] = 1200;
   salaries[2] = 1100;
 
 
   // Sử dụng vòng lặp for để in ra các phần tử của mảng.
   for (var i = 0; i < salaries.count; i = i + 1) {
       print("Element at \(i) =  \(salaries[i])");
   }

 
}
Kết quả chạy ví dụ:

Mảng của Swift là một Struct

Trong Swift, mảng bản chất là một Struct (Cấu trúc) vì vậy nó có các thuộc tính và phương thức. Bao gồm các phương thức thêm các phần tử vào mảng hoặc loại bỏ các phần tử.
// Khai báo một mảng String, có 2 phần tử.
var languages = ["Java","C#"]

// Sử dụng append() để thêm một phần tử mới vào cuối.

languages.append("Swift")

// Cũng có thể sử dụng toán tử += để
// nối thêm một mảng mới vào cuối.
languages += ["C/C++", "Perl"];
Ví dụ:
ExpaddingArrayExample.swift
import Foundation


func expaddingArrayExample()  {
 
   // Khai báo một mảng String, có 2 phần tử.
   var languages = ["Java","C#"]
 
 
   // Sử dụng append() để thêm một phần tử mới vào cuối.
 
   languages.append("Swift")
 
   // Cũng có thể sử dụng toán tử += để
   // nối thêm một mảng mới vào cuối.
   languages += ["C/C++", "Perl"];
     
     
     
   // Sử dụng vòng lặp for..in để duyệt.
   for lang in languages {
     
       print("Language: " + lang)
   }
 
}
Chạy ví dụ:

enumerate

Phương thức enumerate() của mảng trả về đối tượng của struct EnumerateSequence. Mỗi phần tử của EnumerateSequence chứa thông tin chỉ số, và phần tử của mảng ban đầu.
Xem thêm về struct tại:
Ví dụ duyệt mảng:
EnumerateArrayExample.swift
import Foundation
import Cocoa

func enumerateArrayExample()  {
 
 
   // Khai báo một mảng String có 3 phần tử.
   var languages :[String] = ["Java", "C#", "Swift"]
 

 
   for  (index, element )  in languages.enumerate()  {
     
       print("Element at \(index) = \(element)");
   }
 
}
Chạy ví dụ: