Giới thiệu về class, closure trong swift3

Ở bài trước mình đã giới thiệu cho các bạn các kiểu dữ liệu trong Swift 3. Tiếp theo mình sẽ giới thiệu cho các bạn closure(block) và class trong swift3.

Chắc các bạn từng học qua Objective C rất quen thuộc với block, class. Tuy nhiên trong swift3 có nhiều cải tiến về ngôn ngữ,đem lại những lợi ích tuyệt vời !.

bài hướng dẫn này chúng ta tiếp tục sử dụng playground để làm việc với swift 3.

khởi tạo playground . File->new->Playground : đặt tên:”class_closure”.

1  closure tương tự block trong Objective C:

Closure là một biến đặc biệt, không chỉ lưu lại giá trị của một biến mà còn lưu lại một đoạn code. Mục đích chủ yếu là khi ta gặp một đoạn code lặp lại nhiều lần ta sử dụng closure sẽ giúp quản lý cũng như xử lý một cách nhanh gọn. Ngoài ra ứng dụng chủ yếu của closure là khi ta tải dữ liệu từ server cần chạy đa luồng, closure giúp lưu lại data mà data thay đổi .

các bạn có thể tham khảo block tương tự closure trong Objective C tại đây.

– 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ả về

}

– Cách truyền giá trị cho closure:

Tên closure(giá trị,1giá trị2)

ví dụ : tính tổng 2 số:

var closureTongQuat:(Double,Double)->(Double) = {(n:Double,m:Double) in
    return m+n;
}
closureTongQuat(1,4)

kết quả trả về :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  chỉ thực hiện duy nhất một dòng code. Nếu quá 1 dòng sẽ báo lỗi.

var closureShort:(Double,Double)->(Double) = {
    (n,m)in n-m
}

– Kiểu khai báo ngắn 3: $0,$1… là các biến đại diện cho n tham số chúng ta truyền vào.

closureShort(7,2)
var short :(Double,Double)->(Double)
short={$0+$1}
short(0,1)

Như thế mình đã giới thiệu cho các bạn về closure … closure tương tự block nhé ứng dụng cụ thể mình đã giới thiệu rất nhiều trong Objective C.

2 – Class trong swift 3:

Class là gì ? các bạn chắc đã nắm rất chắc rồi =D … Ở đây mình sẽ giới thiệu cụ thể cách khai báo, tạo đối tượng và cách gọi phương thức thuộc tính trong Swift 3.

– Khai báo class trong Swift 3:

class tên class{

var tên thuộc tính:kiểu dữ liệu = giá trị mặc định

var tên thuộc tính:kiểu dữ liệu! // khai báo có thể nil

func Tên phương thức(tham số1,tham số2,tham số 3 ) -> kiểu trả về {// phương thức.

// code …

}

var tên thuộc tính cần get set:Kiểu dữ liệu của thuộc tính{

        set{

// code ….

// ở đây có một đối tượng đặc biệt đó là newValue lưu giá trị truyền vào .

        }

        get{         

            return Giá trị trả về.

        }

    }

}

Ví dụ: Mình đã giải thích rất cụ thể trong code.

//class
class people{
    private var name:String = "binh"// khai báo property name giá trị mặc đinh là "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 được lưu trong newValue-> gửi đến thuộc tính name
        }
        get{
            return name
        }
    }
     var Address:String{// tương tự 
        set{
            address=newValue
        }
        get{
            
            return address
        }
    }
     var Age:Int{// tương tự
        set{
            age=newValue
        }
        get{
            return age
        }
    }
    func Infor() -> Int {// hàm hiển thị thông tin 
        let inTT = "\(name) \(address) \(age)"// nối chuỗi .
        print(inTT)// hiển thị thông tin
        return age
    }

}

 

Tạo đối tượng trong class:

– Tổng quát:

var Tên đối tượng =class(có or có tham số).

Ví dụ đối với 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 quả mình comment bên cạnh luôn !

// truy xuất trực thuộc tính
peo.name// binh
peo.address// thanh 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
peo.Name// đạt
peo.Address// hải dương
peo.Age// 25
// gọi hàm infor của đối tượng.
peo.Infor()// đạt hải dương 25

Hàm khởi tạo trong class:

ví dụ:

// hàm khởi tạo có tham số:

init(para1:kiểu dữ liệu,para2:kiểu dữ liệu,para3:kiểu dữ 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ụ trong 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 có thể truyền tham số vào thông qua hàm khởi tạo tương tự như constructor trong java.

Ngoài ra trong swift 3  còn có hàm willSet, didSet:

willSet: hàm này thuộc tính vẫn còn giữ giá trị mặc định.

didSet: hàm này thuộc tính đã được gán giá trị mới.

class number {
    var IntNumber1:Int = 0{
        // trước sự thay đổi
        willSet{
            print(IntNumber1)// giữ giá trị mặc định của biến.kết quả 0
            print(newValue)// có thể sử dụng giá trị newvalue. kết quả mới 5
        }
        didSet{
            print(IntNumber1)// không có giá trị newValue kết quả thuộc tính =5

        }
        
    }
}

Gọi hàm:

var so = number()
so.IntNumber1
so.IntNumber1=5
so.IntNumber1

Kết quả mình đã comment trong class.

Có gì trong phần tiếp theo:

Phần tiếp theo mình sẽ giới thiệu cho các bạn tính hướng đối tượng trong Swift 3.

 

 

 

 

 

 

Add a Comment

Your email address will not be published. Required fields are marked *