GIỚI THIỆU VỀ CLASS, CLOSURE TRONG SWIFT3 Ở trước giới thiệu cho bạn kiểu liệu Swift Tiếp theo giới thiệu cho bạn closure(block) class swift3 Chắc bạn học qua Objective C quen thuộc với block, class Tuy nhiên swift3 có nhiều cải tiến ngôn ngữ,đem lại lợi ích tuyệt vời ! hướng dẫn tiếp tục sử dụng playground để làm việc với swift khởi tạo playground File->new->Playground : đặt tên:”class_closure” closure tương tự block Objective C: Closure biến đặc biệt, không lưu lại giá trị biến mà lưu lại đoạn code Mục đích chủ yếu ta gặp đoạn code lặp lại nhiều lần ta sử dụng closure giúp quản lý xử lý cách nhanh gọn Ngoài ứng dụng chủ yếu closure ta tải liệu từ server cần chạy đa luồng, closure giúp lưu lại data mà data thay đổi bạn tham khảo block tương tự closure Objective C – Cách khai báo closure tổng quát: var Tênclosure kiểu tham số truyền vào,kiểu tham số truyền vào)->(kiểu trả về) = {(tham số:Kiểu tham số truyền vào,tham số:Kiểu tham số truyền vào) in //code return giá trị trả } – Cách truyền giá trị cho closure: Tên closure(giá trị,1giá trị2) ví dụ : tính tổng số: var closureTongQuat:(Double,Double)->(Double) = {(n:Double,m:Double) in return m+n; } closureTongQuat(1,4) kết trả :5 – Kiểu khai báo ngầm định: var closureTong = {(n:Double,m:Double) in return m+n; } closureTong(1,2) – Kiểu khai báo ngắn 1: var closureHieu:(Double,Double)->(Double) = { (n,m)in return n-m } closureHieu(9,4) – Kiểu khai báo ngắn 2: Sau in thực dòng code Nếu dòng báo lỗi var closureShort:(Double,Double)->(Double) = { (n,m)in n-m } – Kiểu khai báo ngắn 3: $0,$1… biến đại diện cho n tham số truyền vào closureShort(7,2) var short :(Double,Double)->(Double) short={$0+$1} short(0,1) Như giới thiệu cho bạn closure … closure tương tự block ứng dụng cụ thể giới thiệu nhiều Objective C – Class swift 3: Class ? bạn nắm =D … Ở giới thiệu cụ thể cách khai báo, tạo đối tượng cách gọi phương thức thuộc tính Swift – Khai báo class Swift 3: class tên class{ var tên thuộc tính:kiểu liệu = giá trị mặc định var tên thuộc tính:kiểu liệu! // khai báo nil func Tên phương thức(tham số1,tham số2,tham số ) -> kiểu trả {// phương thức // code … } var tên thuộc tính cần get set:Kiểu liệu thuộc tính{ set{ // code … // có đối tượng đặc biệt newValue lưu giá trị truyền vào } get{ return Giá trị trả } } } Ví dụ: Mình giải thích cụ thể code //class class people{ private var name:String = "binh"// khai báo property name giá trị mặc đinh "binh" private var address:String = "thanh hoa"// khai báo property thuộc tính address giá trị mặc định "thanh hoa" private var age:Int = 22// khai báo thuộc tính giá trị mặc đinh 22 var Name:String{// ham set get giá trị cho thuộc tính name set{ name=newValue// giá trị truyền vào lưu newValue-> gửi đến thuộc tính name } 10.get{ 11.return name 12.} 13.} 14.var Address:String{// tương tự 15.set{ 16.address=newValue 17.} 18.get{ 19 20.return address 21.} 22.} 23.var Age:Int{// tương tự 24.set{ 25.age=newValue 26.} 27.get{ 28.return age 29.} 30.} 31.func Infor() -> Int {// hàm hiển thị thông tin 32.let inTT = "\(name) \(address) \(age)"// nối chuỗi 33.print(inTT)// hiển thị thông tin 34.return age 35.} 36 37.} Tạo đối tượng class: – Tổng quát: var Tên đối tượng =class(có or có tham số) Ví dụ class bên trên: var peo = people(); Truy xuất thuộc tính phương thức: Object.tên phương thức or đối tượng – ví dụ: kết comment bên cạnh ! // truy xuất trực thuộc tính peo.name// binh peo.address// hoa peo.age//22 // set giá trị thuộc tính thông qua phương thức peo.Name="đạt"// gán lại gia trị cho thuộc tính name peo.Address="hải dương"// gán lại giá trị peo.age=25// gán lại giá trị // get giá trị thuộc tính thông qua phương thức 10.peo.Name// đạt 11.peo.Address// hải dương 12.peo.Age// 25 13.// gọi hàm infor đối tượng 14.peo.Infor()// đạt hải dương 25 Hàm khởi tạo class: ví dụ: // hàm khởi tạo có tham số: init(para1:kiểu liệu,para2:kiểu liệu,para3:kiểu liệu){ self.thuộc tính1=para1 self.thuộc tính2=para2 self.thuộc tính3=para3 } //hàm khởi tạo không tham số init(){ } ví dụ class trên: init(name:String,address:String,age:Int){ self.name=name self.address=address self.age=age } init(){ } Khi tạo đối tượng truyền tham số vào thông qua hàm khởi tạo tương tự constructor java Ngoài swift có hàm willSet, didSet: willSet: hàm thuộc tính giữ giá trị mặc định didSet: hàm thuộc tính gán giá trị class number { var IntNumber1:Int = 0{ // trước thay đổi willSet{ print(IntNumber1)// giữ giá trị mặc định biến.kết print(newValue)// sử dụng giá trị newvalue kết } didSet{ print(IntNumber1)// giá trị newValue kết thuộc tính =5 10 11.} 12 13.} 14.} Gọi hàm: var so = number() so.IntNumber1 so.IntNumber1=5 so.IntNumber1