๊ตฌ์กฐ์ฒด์ ํด๋์ค ๊ธฐ๋ณธ ํํ
struct ๊ตฌ์กฐ์ฒด_์ด๋ฆ{
ํ๋กํผํฐ์ ๋ฉ์๋๋ค
}
class ํด๋์ค_์ด๋ฆ{
ํ๋กํผํฐ์ ๋ฉ์๋๋ค
}
๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ๊ณตํต์
- ์ฌ๋ฌ ๋ณ์๋ฅผ ๋ด์ ์ ์๋ ์ปจํ ์ด๋
- ๋ฐ์ดํฐ๋ฅผ ์ฉ๋์ ๋ง๊ฒ ๋ฌถ์ด ํํํ๊ณ ์ ํ ๋ ์ฉ์ด
- ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ค
- ์ด๊ธฐํ๋ฅผ ์ ์ํ์ฌ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ ์ ์๋ค
- ํ์ฅ(extension) ํ ์ ์๋ค.
- ํ๋กํ ์ฝ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด์
- ๊ตฌ์กฐ์ฒด๋ value type, ํด๋์ค๋ reference type
- ๊ตฌ์กฐ์ฒด๋ ์์ํ ์ ์๋ค.
- ๊ตฌ์กฐ์ฒด๋ ์์ฑ์๋ฅผ ๊ตฌํํ์ง ์์ ์ ๊ธฐ๋ณธ initializer๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ํ์ ์บ์คํ ์ ํด๋์ค์ ์ธ์คํด์ค์๋ง ํ์ฉ ๋๋ค.
struct ์์
struct CharcterData{
var name: String
var age: Int
// mutating์ ํด์ฃผ์ง ์์ผ๋ฉด ์๋ฌ, ๊ตฌ์กฐ์ฒด๋ value type์ด๊ธฐ ๋๋ฌธ์ method ์์์ property
// ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ์ mutating์ ๋ถ์ด๋ฉด ํด๋น ๊ฐ์ฒด๊ฐ ๋ค์ ์์ฑ๋๋ฉด์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
mutating func updateUser(_ name: String, _ age: Int){
self.name =.name
self.age =.age
print("์ด๋ฆ:\(name), ๋์ด:\(age)")
}
}
var lala = UserData(name: "๋ผ๋ผ", age: 17)
print("์ด๋ฆ: \(lala.name), ๋์ด:\(lala.age)")
var mimi = lala
mimi.name = "๋ผ๋ผ" // ๋์
ํ ๋ ๋ณต์ฌ๊ฐ ์ผ์ด๋๋ ๊ฒ์ด ์๋, ์์ ์ด ๋ฐ์ํ ๋ ๊ฐ ๋ณต์ฌ๊ฐ ์ผ์ด๋จ
mimi.age = 30
์ด ๋, mimi์ ๊ฐ์ ๋ณ๊ฒฝํด๋ lala์ ์์ฑ์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
class ์์
class Book{
var name:String
var coor: String
// ์ด๋์
๋ผ์ด์ฆ๋ฅผ ์ง์ ํด์ผํ๋ค.
init(author:String, color:String){
self.author = author
self.tilte = title
}
// class๋ method ์์์ property ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ mutating ๋ถ์ด์ง ์์๋ ๋๋ค.
func updateBook(author:String, title:String){
self.author = author
self.title = title
print("์ ์: \(author), ์ ๋ชฉ: \(title)")
}
}
let HarryPotter = Book(author:"JKRolling",title:"HarryPotter")
print("์ ์: \(HarryPotter.author), ์ ๋ชฉ: \(HarryPotter.title)")
// ์ ์: JKRolling, ์ ๋ชฉ:HarryPotter
var Homes = HarryPotter
Homes.author = "abc"
Homes.title = "Homes"
print("์ ์: \(HarryPotter.author), ์ ๋ชฉ: \(HarryPotter.title)")
// ์ ์: abc, ์ ๋ชฉ: Homes
// ํด๋์ค๋ reference type์ด๊ธฐ ๋๋ฌธ์ ์์ฑ์ด ํจ๊ป ๋ณํ๋๋ค.
print("์ ์: \(Homes.author), ์ ๋ชฉ: \(Homes.title)")
// ์ ์: abc, ์ ๋ชฉ: Homes
Homes.updateBook(author:"JKRolling",title:"HarryPotter")
// ์ ์: JKRolling, ์ ๋ชฉ:HarryPotter
๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ ๋
: ์ ํ ๊ถ์ฅ์ฌํญ
1. ์ฐ๊ด๋ ๊ฐ๋จํ ๊ฐ์ ์งํฉ์ ์บก์ํํ๋ ๊ฒ๋ง์ด ๋ชฉ์ ์ผ ๋
2. ์ธ์คํด์ค๊ฐ ์ฐธ์กฐํ๋ ๊ฒ๋ณด๋ค ๋ณต์ฌํ๋ ๊ฒ์ด ํฉ๋นํ ๋
3. ๊ตฌ์กฐ์ฒด์ ์ ์ฅ๋ ํ๋กํผํฐ๊ฐ ๊ฐ ํ์ ์ด๋ฉฐ ์ฐธ์กฐํ๋ ๊ฒ๋ณด๋ค ๋ณต์ฌํ๋ ๊ฒ์ด ํฉ๋นํ ๋
4. ๋ค๋ฅธ ํ์ ์ผ๋ก๋ถํฐ ํ๋กํผํฐ๋ ๋ฉ์๋ ๋ฑ์ ์์๋ฐ๊ฑฐ๋ ์์ ์ ์์ํ ํ์๊ฐ ์์ ๋
'๐ iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๊ธฐ๋ณธ ํจ์ function (0) | 2021.03.10 |
---|---|
[Swift] ์ปฌ๋ ์ ํ์ | Array, Dictionary, Set (0) | 2021.03.10 |
[Swift] Any, AnyObject, nil (0) | 2021.03.10 |
[ Swift ] ์ฌ๋ฌ ์ค์ ๋ฌธ์์ด์ ๋ง๋๋ ๋ฐฉ๋ฒ (0) | 2021.02.01 |
[ Swift ] ์์์ ๋ณ์ (0) | 2021.01.30 |