struct Person {
var name: String
var age: Int
func speak() {
print("Hello")
}
}
let p = Person(name: "Steve", age: 50)
p.name
p.age
메소드 호출하기
메소드와 함수의 차이!
메소드 -> 메소드는 instance 뒤에 .를 통하여 호출이 가능하다.
함수 -> 함수는 instance 필요없이 혼자 호출이 가능
아래와 같은 방식으로 structure의 메소드를 호출할 수 있다.
p.speak()
class Person {
var name = "John Doe"
var age = 0
func speak() {
print("Hello")
}
}
let p = Person()
p.speak()
class Position {
var x: Double
var y: Double
init() {
x = 0.0
y = 0.0
}
init(value: Double){
x = value
y = value
}
}
1) parameter가 없는 생성자를 사용( init() )
let a = Position()
a.x // 0.0
a.y // 0.0
2) parameter가 있는 생성자를 사용
let b = Position(value: 100)
b.x // 100
b.y // 100
truct PositionValue {
var x = 0.0
var y = 0.0
}
// 기본 생성자 생성
var v = PositionValue()
// 복사하기
var v2 = v
v2.x = 12
v2.y = 34
// 값이 변한다!
v // 0, 0
v2 // 12, 34
-> Class의 경우 참조 형식으로 복사가 아닌 참조를 하므로 복사본이 아니므로 바뀌면 원본도 바뀐다!
class PositionObject {
var x = 0.0
var y = 0.0
}
var o = PositionObject()
var o2 = o
o2.x = 12
o2.y = 34
o // 12 , 34
o2 // 12, 34
class One {
struct Two {
enum Three {
case a
class Four {
// var a = Four()
}
}
}
// class 안에서는 class 안의 struct를 가져올 수 있다!
var a = One.Two()
}
let two: One.Two = One.Two()
let love : One.Two.Three.Four = One.Two.Three.Four()
let like = One.Two.Three.a