Nghiên cứu : Sự khác nhau giữa Swift và Object-C ?

Hôm nay mình sẽ cùng các bạn nghiên cứu về Swift , Về Swift định nghĩa thì ở trên mạng cũng có rất nhiều , như

"Swift là một ngôn ngữ lập trình mới dành cho các nhà phát triển ứng dụng dành cho iOS và OS X. Nhiều phần của Swift sẽ rất thân quen với những người đã có kinh nghiệm lập trình bằng C và Objective-C.

Cũng giống như C, Swift cũng sử dụng Int cho Intergers, Double và Float dùng cho kiểu dữ liệu floating-point, Bool, String, ngoài ra còn có Array và Dictionary.....

Swift cũng đi kèm với công cụ lập trình trực quan, làm tới đâu thấy tới đó luôn, sẽ giúp ích nhiều cho các lập trình viên, đỡ tốn công debug.

Theo đà này, có thể Swift sẽ thịnh hành trong tương lai không xa."

Nhưng hôm nay mình sẽ đi từ demo , để giúp tất cả mọi người hiểu sâu hơn về nó , Mỗi giải thích 1 lần nhé 😄 (Chủ yếu là so sánh Swift và Object-C, nên những vấn đề cơ bản , mình sẽ không nói sâu )

import UIKit //1

class TodoManager { //2 func printMessage(name:String) ->Int { //3 println("Welcome (name) todo "); //4 return 10; //5 } }

class Recipes { //6 var aName:String = "" //7 var duration:Int = 10; //8 var ingredent : [String] = ["egg"]; //9 }

class NoValueClass { var aName1:String = "" var duration1:Int = 10 var inge : [String]? }

class ViewController: UIViewController { //10

1 : UIKit là một thư viện của App , nó cũng giống như Object - C , (Xây dựng và quản lý thư viện người dùng) . 2 : Đây là Class của Swift 3 : Đây là hàm của nó , với tham số truyền vào là name:String , và tham số trả về là kiểu Int 4 : Ở đây dùng println (Giống như ngôn ngữ C) nó có chức năng giống NSLog 5 : Đây là tham số trả về 6 : Tương tự như 2 7 : Đây là hàm khởi tạo các biến String trong Class , (Chú ý , không được khởi tạo nil , hoặc phải đặt dấu "?") 8 : Đây là khởi tạo 1 biến kiểu Int 9 : Đây là 1 mảng , rất mới trong Swift 10 : Đây là class được kế thừa từ UIViewController

Tiếp theo nhé :

override func viewDidLoad() { //11 super.viewDidLoad() //12 // Do any additional setup after loading the view, typically from a nib. var numberOfRow = 30; // Variable //13 let maxNumberOfRow = 100; //Constant //14 var = "hourse"; //15 /* Object-C const int count = 10; double price = 23.55; NSString *myMessage = @"Objective-C is not dead yet!"; */

/* Swift */ let count = 10; // Int value //16 var price = 24.50; // Double //17 var myMessage = "Message"; // String //17

var showExtractly : String = "Hello Somebody"; //18 var showDouleExtractly : Float = 23.3; //19

var notNeedSemiconlon : String = "Vai long the nhi ?" //20

11 : Đây là hàm chạy vào sau khi load của UIViewController 12 : Đây là hàm Super , thực hiện các phương thức của lớp hiện tại 13 : Khai báo 1 biến kiểu var - Dưới dạng kiểu số Variable 14 : Khai báo 1 biến kiểu let - Dưới dạng kiểu Constant Chú ý là var thì có thể set giá trị cho nó , nhưng let là Constant nên sẽ không thay đổi giá trị nó được . 15 : Mảng String 16, 17, 18, 19, 20 : Tương tự như trên , nó khai báo các biến , với định dạng rõ ràng .

Tiếp đến là :

/Plus string easy/ var string1 : String = "String one"; var string2 : String = "String two"; print(string1+string2); //21

/Condition/ if string1 == string2{ //22 print("Same"); } /condition better/ string1 == string2 ? "Same" : "No" // WRONG

/Array/ /*Object-C NSArray *recipes = @[@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich"]; */ /Swift/ var myArrays = ["Numb1","Number 2","Number 3", "phu phu","oh no"]; //23 var showExtractlyArray : [String] = ["string 1","string 2"]; //24

var countArray = myArrays.count; //25 myArrays += "New Varible"; //26 myArrays += ["Multipe variable", "Multipe", "Mul"]; //27 var getObjectOfarray = myArrays[0]; //28

myArrays[1...3] = ["Cheese Cake", "Greek Salad", "Braised Beef Cheeks"] //29

/Dictionary/ /*Object-C NSDictionary *companies = @{@"AAPL" : @"Apple Inc", @"GOOG" : @"Google Inc", @"AMZN" : @"Amazon.com, Inc", @"FB" : @"Facebook Inc"}; */ /Swift/ var companies:Dictionary = ["AAPL" : "Apple Inc", "GOOG" : "Google Inc", "AMZN" : "Amazon.com, Inc", "FB" : "Facebook Inc"]; //30

21 : Nhìn vào đây , mình thấy kiểu + 2 "String" rất là mới trong Swift (Bên Object-C sẽ dùng append) 22 : Đây cũng là kiểu so sánh mới trong swift , ở bên Object-C sẽ dùng hàm : isEqualToString , để so sánh 2 chuỗi , 23 : Khai báo 1 mảng String 24 : Cũng khai báo 1 mảng kiểu String , nhưng chỉ ra rất rõ ràng là String 25 : Tính tổng phần tử trong mảng . 26 : Cộng 1 biến mới ở mảng , rất đặc biệt , với Object-C , mình sẽ cần phải là NSMutableArray và dùng hàm addObjec, 27 : Cộng nhiều biến cùng một lúc , 28 : Phù , cái này khá là giống ngôn ngữ C , ở bên Object-C sẽ dùng là objectAtIndex 29 : Khai báo dạng "..." 30 : Đây là Dictionary , và kiểu key và value là String và String

Phù , dài quá nhỉ , phần cuối :

/For/ for(stockCode, name ) in companies { //31 print("(stockCode) = (name)"); }

/USE Key-Value/ for stockCode in companies.keys{ //32 println("Stock code = (stockCode)" ); } for name in companies.values { //33 println("Name = (name)" ); }

companies["TWTR"] = "Twitter Inc" //34

/* CALL Class */ var aItem = Recipes() //35

/Use dot to change value/ aItem.aName = "123"; //36 aItem.duration = 50; //37 aItem.ingredent = ["acvgf"]; //37

/call Class and method in Class/ var todoManager = TodoManager(); let numberOfToDoItem = todoManager.printMessage("My Name here"); //38 println(numberOfToDoItem);

//39 /Switch/ /Object-C/ /* switch recipeName12 { case "Egg Benedict": println("Let's cook!") case "Mushroom Risotto": println("Hmm... let me think about it") case "Hamburger": println("Love it!") default: println("Anything else") } */

var speed = 50 //40 switch speed { case 0: println("stop") case 0..40: println("slow") case 40...70: println("Normal") case 71..<101: println("Fast") default: println("NOOO") } }

31 : Đây là hàm for nhé , khác khác tí , nhưng nhìn vào rất dễ hiểu 32 : Cũng là hàm for , nhưng ở đây duyệt toàn bộ Key 33 : Cũng là hàm for , nhưng ở đây duyệt toàn bộ Value 34 : Tham chiếu giá trị từ key và value , 35 : Khai báo class , tức là tạo 1 biến mới của class 36,37 : Gán giá trị cho các biến ở trong class , đè lên hàm khởi tạo . 38 : Gọi một phương thức ở trong Class 39 : Đây là khai báo switch ở trong object-C 40 : Đây là khai báo Switch ở trong Swift Chú ý với phần "40" ở đây mình dùng 2 loại khác nhau là : ".." và "..." , với 0..40 , có nghĩa là không bao gồm số 40 , và 40...70 , có nghĩa là gồm cả 40 và 70 ,

Phù, hơi dài , nhưng mình sẽ upload source lên , mọi người xem , sẽ thấy nó cũng không khác Object-C nhiều ,