โป convention: ๊ตฌ์กฐ์ฒด์ ์ด๋ฆ์ ๋๋ฌธ์, ๊ทธ ์์ property๋ method๋ค์ ์๋ฌธ์, ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋๋ ์๋ฌธ์
instance ์ธ์คํด์ค
์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ด๊ธฐํ๋ฅผ ํด์ผํ๊ณ ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ structure์ ๋ชจ๋ ํ๋กํผํฐ์ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ง๊ฒ ๋๋ค.
struct User {
static var currentUser: User = User(userName: "Default", email: "Default", age: 0)
var userName: String
var email: String
var age: Int
static func logIn(user: User){
currentUser = user
}
}
let me = User(userName: "Harry", email: "djkdf@naver.com", age: 16) // me ์ธ์คํด์ค ์์ฑ
initializers ์ด๋์ ๋ผ์ด์
var string = String.init() // " "
var integer = Int.init() // 0
var bool = Bool.init() // false
var string = String() // " "
- Default value
์๋ก์ด ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํํ๋ ค๋ฉด ๋ชจ๋ ํ๋กํผํฐ์ ๋ํด์ ๊ฐ์ ์ค์ ํด์ผํ๋ค. ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ํ์ ์ ์ธ ์์ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ๋ ๊ฒ์ธ๋ฐ ์ ํด์ ธ์๋ ๊ธฐ๋ณธ ๊ฐ์ ์ค์ ํด๋์์ผํ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค. ex. ์๋์ฐจ์ ์ต์ด ์ฃผํ๊ฑฐ๋ฆฌ๋ฅผ 0์ผ๋ก ์์ํ๊ธฐ
struct Odometer {
var count: Int = 0
}
let odmeter = Odometer()
- Memberwise Initializers
์ด๊ธฐํ์ํฌ ๋ ๋ชจ๋ ๊ฐ์ ์ค์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
struct Car{
var make: String
var year: Int
var color: Color
var topSpeed: Int
}
let firstCar = Car(make: "Hyundae", year: 2021, color: .black, topSpeed: 120)
- Custom Initializers
์ด๊ธฐํ ํ๋ก์ธ์ค๋ฅผ customize ํ ์ ์๋ค.
struct Temperature {
var celsius: Double
init(celsius: Double) {
self.celsius = celsius
}
init(fahrenheit: Double){ // customize initializer
celsius = (fahrenheit - 32)/1.8 // ํ์จ
}
}
let temperature = Temperature(fahrenhit: 212.0)
Instance Methods ์ธ์คํด์ค ๋ฉ์๋
ํน์ ํ์ ์ ์ธ์คํด์ค์๋ง ํธ์ถ ํ ์ ์๋ ์ ํ ๋ ํจ์.
struct Size{
var width: Double
var height: Double
func area() -> Double{
return width * height
}
}
let someSize = Size(width: 10.0, height: 5.5)
let area = someSize.area()
Mutating Methods
์ธ์คํด์ค ๋ฉ์๋ ์์์ ํ๋กํผํฐ ๊ฐ์ ์ ๋ฐ์ดํธ ํ๊ณ ์ถ์ ๋ mutating ํค์๋๋ฅผ ๋ถ์ธ๋ค.
struct Odometer{
var count: Int = 0
mutating func increment(){
count += 1
}
mutating func reset(){
count = 0
}
}
Stored Property
: ๊ฐ์ ์ ์ฅํ๊ณ ์๋ค๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ ๋ฌํจ
Computed Property(Calculated Property)
: ํ๋กํผํฐ ๊ฐ์ access ํ ๋ ๋ง๋ค ๊ทธ ๋ ๊ทธ ๋ ๊ณ์ฐํด์ return
Copying
structure๋ value type์ด๋ค. (class๋ reference type) ๋ฐ๋ผ์, ์ธ์คํด์ค๋ฅผ ์ด๋ค ๋ณ์์ ํ ๋นํ๋ค๊ฑฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋๊ธฐ๋ฉด ๊ทธ ๊ฐ์ ๋ณต์ฌ๊ฐ ๋๋ค. ์ฆ, ํ ๋นํ ๋ค์ ๊ฐ์ ๋ฐ๊พธ๋ฉด ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
↓ Struct Class ๋น๊ต ↓
asxpyn.tistory.com/17?category=839455
Self
ํ์ฌ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
Variable Properties
์ธ์คํด์ค ํ๋กํผํฐ๋ค์ด ๋ชจ๋ var์ฌ๋ ์ธ์คํด์ค ์์ฒด๊ฐ let์ผ๋ก ๋ง๋ค์ด์ก๋ค๋ฉด ์์ฑ์ ํ๋๋ ๋ชป ๋ฐ๊พผ๋ค.
structure ์์ ์๋ ์ธ์คํด์ค ์ ์ธ, ์ธ์คํด์ค ๊ทธ ์์ฒด์ ์ ์ธ ๋ชจ๋ var ์ผ ๋๋ง ์์ฑ์ ๋ฐ๊ฟ ์ ์๋ค.
โป Swift๋ Class๋ณด๋ค Structure ์ฌ์ฉ์ ๊ถํ๋ค.
'๐ iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๊ธธ์ด๊ฐ ์ ํด์ง ๋ฆฌ์คํธ ๋ง๋ค๊ณ 0์ผ๋ก ์ด๊ธฐํํ๊ธฐ (0) | 2021.06.30 |
---|---|
[Swift] Class์ Inheritance(์์) (0) | 2021.06.22 |
[Swift] switch ๊ตฌ๋ฌธ์ ๋ฒ์ ์ฐ์ฐ์ (0) | 2021.03.15 |
[Swift] ๋ฐ์ดํฐ ํ์ ์ผ๋ก์์ ํจ์ (0) | 2021.03.15 |
[Swift] ๋งค๊ฐ๋ณ์/์ ๋ฌ์ธ์ ๋ ์ด๋ธ/๊ฐ๋ณ ๋งค๊ฐ๋ณ์ (0) | 2021.03.15 |