구조체
Coddy Swift 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 7번째.
구조체는 클래스처럼 데이터와 메서드를 그룹화합니다. Swift는 모든 구조체에 대해 멤버별 이니셜라이저를 작성하며, 각 프로퍼티마다 하나의 매개변수를 가집니다. 따라서 구조체에는 자체 init이 필요하지 않습니다:
struct Point {
var x: Int
var y: Int
func distanceFromOrigin() -> Int {
abs(x) + abs(y)
}
}
let p = Point(x: 3, y: -4)
print(p.x)
print(p.distanceFromOrigin())출력:
3
7기본값이 있는 속성은 멤버별 이니셜라이저에서 생략할 수 있습니다:
struct Settings {
var volume = 5
var muted = false
}
let quiet = Settings(volume: 1)
print(quiet.volume)
print(quiet.muted)출력:
1
falselet 상수에 저장된 구조체는 전혀 변경할 수 없으며, var 프로퍼티조차 변경할 수 없습니다. 변경하려면 var에 저장하세요:
let fixed = Point(x: 1, y: 2)
// fixed.x = 5 // error: 할당할 수 없음, fixed는 let 상수입니다
var moving = Point(x: 1, y: 2)
moving.x = 5 // 괜찮음Swift 자체의 많은 타입은 구조체입니다: Int, Double, String, Array 및 Dictionary. 여러분의 구조체도 이러한 타입과 같은 방식으로 동작합니다. 즉, 단순한 값입니다.
struct Money {
var cents: Int
func formatted() -> String {
"\(cents / 100).\(cents % 100 < 10 ? "0" : "")\(cents % 100)"
}
}
print(Money(cents: 1250).formatted())
print(Money(cents: 305).formatted())출력:
12.50
3.05챌린지
쉬움Item 구조체를 선언하고 name(String), price(Int, 센트 단위), quantity(Int) 속성을 추가하세요. 가격과 수량을 곱한 값을 반환하는 total() 메서드와 2 x tea = 350을 반환하는 line() 메서드를 추가하세요.
제공된 코드는 한 줄마다 하나의 항목을 name,price,quantity 형식으로 읽고, 멤버별 초기화 프로그램을 사용하여 각 Item을 생성한 다음 line()을 출력합니다. 그런 다음 sum: 과 모든 합계의 합을 출력합니다.
코드는 Item.swift에 작성하세요. main.swift에는 제공된 입력/출력 코드가 있으며 편집할 수 없습니다.
직접 해보기
// 제공된 입력/출력 코드: 그대로 유지하세요
var input: [String] = []
while let line = readLine() { input.append(line) }
var sum = 0
for row in input {
let p = row.split(separator: ",").map(String.init)
let item = Item(name: p[0], price: Int(p[1])!, quantity: Int(p[2])!)
print(item.line())
sum += item.total()
}
print("sum: \(sum)")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: Swift 플레이그라운드