Monday, May 18, 2015

(Swift) So sánh giữa class và struct trong ngôn ngữ swift

So sánh giữa class và struct trong ngôn ngữ swift, theo tài liệu của Apple nói như sau: "One of the most important differences between structures and classes is that structures are always copied when they are passed around in your code, but classes are passed by reference."

Sau đây là ví dụ giữa class và struct để cho các bạn dễ hiểu.

- Tạo 1 class tên là SomeClass, khởi tạo biến aClass với tham số là "Bob", sau đó gán biến aClass vào biến bClass. Đổi tên biến bClass thành "Sue". 
Cuối cùng in tên của 2 biến đó ra màn hình thì chúng đều là "Sue":

 class SomeClass {  
   var name: String  
   init(name: String) {  
     self.name = name  
   }  
 }  
 var aClass = SomeClass(name: "Bob")  
 var bClass = aClass // aClass and bClass now reference the same instance!  
 bClass.name = "Sue"  
 println(aClass.name) // "Sue"  
 println(bClass.name) // "Sue"  

Tạo 1 struct tên là SomeStruct, khởi tạo biến aStruct với tham số là "Bob", sau đó gán biến aStruct vào biến bStruct. Đổi tên biến bStruct thành "Sue". 
Cuối cùng in tên của 2 biến đó ra màn hình thì aStruct sẽ in ra là 'Bob' và bStruct sẽ in ra là 'Sue':
 struct SomeStruct {  
   var name: String  
   init(name: String) {  
     self.name = name  
   }  
 }  
 var aStruct = SomeStruct(name: "Bob")  
 var bStruct = aStruct // aStruct and bStruct are two structs with the same value!  
 bStruct.name = "Sue"  
 println(aStruct.name) // "Bob"  
 println(bStruct.name) // "Sue"  

Tuỳ theo từng trường hợp mà bạn nên dùng đối tượng đó là class hay struct.

Bạn có thể tải playground của code này tại đây.

Tài liệu tham khảo:
http://stackoverflow.com/questions/24217586/structure-vs-class-in-swift-language

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.