[Swift] Be aware of different behaviour between struct and class

import Foundation
class Cat: CustomStringConvertible {
var description: String {
return "\(name): \(age) years old"
}
let name: String
var age: Int
init(name: String = "Sue", age: Int = 0) {
self.name = name
self.age = age
}
}
struct Dog: CustomStringConvertible {
var description: String {
return "\(name): \(age) years old"
}
let name: String
var age: Int
init(name: String = "Sue", age: Int = 0) {
self.name = name
self.age = age
}
}
var cats = Array<Cat>(repeating: Cat(), count: 2)
cats[1].age = 2
var dogs = Array<Dog>(repeating: Dog(), count: 2)
dogs[1].age = 2
print("cats: \(cats)")
print("dogs: \(dogs)")
/*
output:
cats: [Sue: 2 years old, Sue: 2 years old]
dogs: [Sue: 0 years old, Sue: 2 years old]
*/



References
- Swift - Classes and Structures#Classes Are Reference Types

댓글

이 블로그의 인기 게시물

Unity에서 모델의 폴리곤의 반대편이 랜더링 되지 않는 문제 해결 방법

Docker 컨테이너 네트워크 설정시 ifconfig로 docker0를 찾을 수 없는 문제에 대해

Use FFMPEG in XCode(for MacOS)