ํน์ ํ์ ์ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ๊ณผ ๊ด๋ จ๋ ํจ์๋ฅผ ๋ฉ์๋๋ผ ํ๋ค. ํน์ ํ์ ์ ์ธ์คํด์ค์์ ์คํํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ธ์คํด์ค ๋ฉ์๋, ํน์ ํ์ ๊ณผ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ํ์ ๋ฉ์๋๋ผ ํ๋ค.Swift์์๋ ํด๋์ค ํ์ ๋ฟ๋ง์๋๋ผ ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์์๋ ๋ฉ์๋๋ฅผ ์ ์ธํด ์ฌ์ฉํ ์ ์๋ค.
์ธ์คํด์ค ๋ฉ์๋(Instance Methods)
์ธ์คํด์ค ๋ฉ์๋๋ ํน์ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ ์ธ์คํด์ค์ ์ํ ๋ฉ์๋์ด๋ค. ์ด ๋ฉ์๋๋ฅผ ํตํด ์ธ์คํด์ค ๋ด์ ๊ฐ์ ์ ์ดํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ค. ์ธ์คํด์ค ๋ฉ์๋๋ ์ด๋ฆ ๊ทธ๋๋ก ๊ทธ ์ธ์คํด์ค๊ฐ ์ํ ํน์ ํ์ ์ ์ธ์คํด์ค์์๋ง ์คํ ๊ฐ๋ฅํ๋ค.
class Counter {
var count = 0
func increment() {
count += 1
}
func increment(by amount: Int) {
count += amount
}
func reset() {
count = 0
}
}
self ํ๋กํผํฐ(The self Property)
๋ชจ๋ ํ๋กํผํฐ๋ ์์์ ์ผ๋ก ์ธ์คํด์ค ์์ฒด๋ฅผ ์๋ฏธํ๋ self๋ผ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ๋๋ค. ์ธ์คํด์ค ๋ฉ์๋ ์์์ selfํ๋กํผํฐ๋ฅผ ์ด์ฉํด ์ธ์คํด์ค ์์ฒด๋ฅผ ์ฐธ์กฐํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.
์ธ์ ์ด๋ฆ์ด ํ๋กํผํฐ ์ด๋ฆ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ๋กํผํฐ์ ์ ๊ทผํ๊ธฐ ์ํด ๋ช ์์ ์ผ๋ก selfํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋ค์์ selfํค์๋๋ฅผ ์ด์ฉํด ํ๋ผ๋ฏธํฐ์ ํ๋กํผํฐ์ ๋ชจํธํจ์ ๋ช ํํ๊ฒ ํ ์๋ค.
struct Point {
var x = 0.0, y = 0.0
func isToTheRightOf(x: Double) -> Bool {
return self.x > x // self.x๋ฅผ ์ด์ฉํด ํ๋กํผํฐ x์ ์ธ์ x๋ฅผ ๊ตฌ๋ถ
}
}
let somePoint = Point(x: 4.0, y: 5.0)
if somePoint.isToTheRightOf(x: 1.0) {
print("This point is to the right of the line where x == 1.0")
}
// "This point is to the right of the line where x == 1.0" ์ถ๋ ฅ
์ธ์คํด์ค ๋ฉ์๋ ๋ด์์ ๊ฐ ํ์ ๋ณ๊ฒฝ (Modifying Value Types from Within Instance Methods)
๊ตฌ์กฐ์ฒด์ ์ด๊ฑฐํ์ ๊ฐ ํ์ ์ด๋ค. ๊ทธ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์คํด์ค ๋ฉ์๋ ๋ด์์ ๊ฐ ํ์ ์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ํ์ง๋ง ๊ฐ ํ์ ํ์ ๋ฉ์๋์์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๋ ๋ฉ์๋์ mutating๋ถ์ฌ ์ฃผ๋ฉด ๊ฐ๋ฅํ๋ค. mutating์ด๋ผ๋ ํค์๋๊ฐ ๋ถ์ ๋ฉ์๋์์๋ ๋ฉ์๋์ ๊ณ์ฐ์ด ๋๋ ํ ์๋ณธ ๊ตฌ์กฐ์ฒด์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฎ์ด ์จ์ ๊ทธ ๊ฐ์ ๋ณ๊ฒฝํ๋ค.
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
print("The point is now at (\(somePoint.x), \(somePoint.y))")
// "The point is now at (3.0, 4.0)" ์ถ๋ ฅ
ํ์ ๋ฉ์๋ (Type Methods)
์ธ์คํด์ค ๋ฉ์๋๋ ํน์ ํ์ ์ ์ธ์คํด์ค์์ ํธ์ถ๋๊ณ , ํ์ ๋ฉ์๋๋ ํน์ ํ์ ์์ฒด์์ ํธ์ถํด ์ฌ์ฉํ๋ค. ํ์ ๋ฉ์๋์ ์ ์ธ์ ๋ฉ์๋ ํค์๋ func์์ staticํน์ classํค์๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค. static๋ฉ์๋์ class๋ฉ์๋์ ์ฐจ์ด์ ์ static๋ฉ์๋๋ ์๋ธํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ ํ ์ ์๋ ํ์ ๋ฉ์๋ ์ด๊ณ , class๋ฉ์๋๋ ์๋ธํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ ํ ์ ์๋ ํ์ ๋ฉ์๋ ๋ผ๋ ๊ฒ์ด๋ค.
'๐ฆ Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Inheritance (0) | 2022.07.05 |
---|---|
Subscripts (0) | 2022.07.04 |
Properties (0) | 2022.07.04 |
Structures and Classes (0) | 2022.06.22 |
Enumerations (0) | 2022.06.15 |