struct Point {
var x: Int
var y: Int
}
var obj = Point(x:10,y:10) // 프로퍼티 자동 초기화
struct Point {
var x : Int
var y : Int
init() {
self.x = 0
self.y = 0
}
}
var obj2 = Point() // 자동 초기화 이니셜라이저 사용 불가.
struct MyStruct {
var value : Int
//designated initializer
init(v: Int) {
self.value = v
}
//convenience initializer
init() {
self.init(v:0)
}
}
struct Point {
var x : Int = 0
var y : Int = 0
mutating func moveTo(x:Int,y: Int) {
self.x = x
self.y = y
}
}
class MyClass {
var value = 0
}
let obj1 = MyClass()
let obj2 = obj1 //reference count 1 증가
obj1.value = 10
obj2.value // 10
클래스는 객체 참조를 추가합니다.
따라서 객체를 공유합니다.
struct MyStructure {
var value = 0
}
let obj1 = MyStructure()
let obj2 = obj1 //구조체를 복사
obj1.value = 10
obj2.value //0
클래스는 객체를 복사합니다.
따라서 객체를 공유하지 않습니다.
enum Day {
case am
case pm
}
var now = Day.am
switch now {
case .am :
print("오전")
case .pm :
print("오후")
}
: 타입 정보가 있으면 Enum 이름 생략 가능
enum Pet : Int {
case cat = 0, dog, other //dog = 1, other = 2
}
enum Device : String {
case phone = "휴대폰", pad = "패드"
}
enum Pet {
case cat,dog
var name : String {
switch self {
case .cat:
return "냥이"
case .dog:
return "강아지"
}
}
func des() -> String {
return self.name
}
}
var cat = Pet.cat
cat.name //냥이
cat.des() //냥이