8์ผ์ฐจ: 100DaysOfSwift๐
3277 ๋จ์ด reactnativeswiftiosjavascript
๊ตฌ์กฐ์ฒด ํํธ 1
๋๋ง์ ๊ตฌ์กฐ์ฒด ๋ง๋ค๊ธฐ
Swift์์ ๊ตฌ์กฐ์ฒด๋ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ๋ณ์๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ตฌ์กฐ์ฒด๋ "๋ช ๋ช ๋ ์ ํ"์ ๋๋ค. String, Int ๋๋ Array์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณ ์ ํ ๊ตฌ์กฐ๋ฅผ ์ ์ํ์ฌ ๋์ค์ ์ฝ๋์์ ์ฌ์ฉํ ๋ช ๋ช ๋ ์ ํ์ ์์ฑํ ์ ์์ต๋๋ค.
๊ตฌ์กฐ์ฒด ๋ด๋ถ์ ๋ณ์๋ฅผ ์์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
๊ตฌ์กฐ์ฒด๋ ๊ณ ์ ํ ๋ณ์์ ์์, ๊ณ ์ ํ ํจ์๋ฅผ ์ ๊ณตํ ๋ค์ ์ํ๋ ๋๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
struct Sport {
var name: String
}
์ ํ์ ์ ์ํ๋ฏ๋ก ์ด์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
var tennis = Sport(name: "Tennis")
print(tennis.name)
Output:
Tennis
tennis.name = "Lawn tennis"
print(tennis.name)
Output:
Lawn tennis
์์ฑ์ ์ผ๋ฐ ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก Swift์ ์ ํ ์ถ๋ก ์ ์์กดํ ์ ์์ต๋๋ค.
๊ณ์ฐ๋ ์์ฑ
struct Sport {
var name: String
}
์ฌ๊ธฐ์๋ String์ ์ ์ฅํ๋ name ์์ฑ์ด ์์ต๋๋ค. Swift์๋ ๊ฐ์ ์์๋ด๊ธฐ ์ํด ์ฝ๋๋ฅผ ์คํํ๋ ์์ฑ์ธ ๊ณ์ฐ๋ ์์ฑ์ด๋ผ๋ ๋ค๋ฅธ ์ข ๋ฅ์ ์์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ฅ ์์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
struct Sport {
var name: String
var isOlympicSport: Bool
var olympicStatus: String {
if isOlympicSport {
return "\(name) is an Olympic sport"
} else {
return "\(name) is not an Olympic sport"
}
}
}
let chessBoxing = Sport(name: "Chessboxing", isOlympicSport: false)
print(chessBoxing.olympicStatus)
Output:
Chessboxing is not an Olympic sport
์ฌ์ฐ ๊ด์ฐฐ์
struct Progressa {
var task: String
var amount: Int {
didSet {
print("\(task) is now \(amount)% complete")
}
}
}
var progress = Progressa(task: "Loading data", amount: 0)
progress.amount = 30
progress.amount = 80
progress.amount = 100
Output:
Loading data is now 30% complete
Loading data is now 80% complete
Loading data is now 100% complete
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ Swift๊ฐ ๊ธ์ก์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด didSet ์์ฑ ๊ด์ฐฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ธ์ก์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ผ๋ถ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
์์ฑ์ด ๋ณ๊ฒฝ๋๊ธฐ ์ ์ ์กฐ์น๋ฅผ ์ทจํ๊ธฐ ์ํด willSet์ ์ฌ์ฉํ ์๋ ์์ง๋ง ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
ํ๋ ์์
๊ตฌ์กฐ์ฒด๋ ๋ด๋ถ์ ํจ์๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ ์ด๋ฌํ ํจ์๋ ํ์์ ๋ฐ๋ผ ๊ตฌ์กฐ์ฒด์ ์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ตฌ์กฐ์ฒด ๋ด๋ถ์ ํจ์๋ฅผ ๋ฉ์๋๋ผ๊ณ ํฉ๋๋ค.
struct City {
var population: Int
func collectTaxes() -> Int {
return population * 1000
}
}
let london = City(population: 9_000_000)
london.collectTaxes()
๋์ฐ๋ณ์ด ๋ฐฉ๋ฒ
๊ตฌ์กฐ์ฒด์ ๋ณ์ ์์ฑ์ด ์์ง๋ง ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์์๋ก ์์ฑ๋ ๊ฒฝ์ฐ ํด๋น ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ฉ์๋ ๋ด์์ ์์ฑ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด mutating ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํด์ผ ํฉ๋๋ค.
struct Person {
var name: String
mutating func makeAnonymous() {
name = "Anonymous"
}
}
var person = Person(name: "Ed")
person.makeAnonymous()
print(person.name)
Output:
Anonymous
๋ฌธ์์ด์ ์์ฑ ๋ฐ ๋ฉ์๋
let string = "Welcome to 100Days Of Swift"
print(string.count) //27
๋ฌธ์์ด์ด ํน์ ๋ฌธ์๋ก ์์ํ๋ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๋ hasPrefix() ๋ฉ์๋๊ฐ ์์ต๋๋ค.
print(string.hasPrefix("Sau")) //false
print(string.hasPrefix("Welcome")) //true
print(string.uppercased()) //WELCOME TO 100DAYS OF SWIFT
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(8์ผ์ฐจ: 100DaysOfSwift๐), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/100rabhcsmc/day-8-100daysofswift-489kํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค