STUDY/Swift & iOS

Swift 문법 기초 4

sinawi95 2022. 6. 20. 20:04
728x90

사용자 정의 타입

구조체

value 타입

struct Sample {
	// instance property
	var mutableProperty: Int = 100;
	let immutableProperty: Int = 200;
	
	// type property
	static var typeProperty: Int = 100;
	
	// 인스턴스 메서드
  func instanceMethod() {
      print("instance method")
  }

  // 타입 메서드
  static func typeMethod() {
      print("type method")
  }
}

가변 인스턴스로 선언하면 가변 프로퍼티는 변경 가능, 불변 프로퍼티는 변경 불가능

불변 인스턴스로 선언하면 가변 프로퍼티도 변경 불가능

인스턴스 메서드: 인스턴스를 선언한 이후에 사용할수 있는 메서드

타입 메서드: 타입에서 사용하는 메서드. 인스턴스에서는 타입 프로퍼티나 타입 메서드를 사용할수 없음

클래스

구조체와 비슷함

reference 타입

다중 상속이 되지 않음

상속후 재정의가 가능한 class 타입 메서드

상속후 재정의 불가능한 static 타입 메서드

열거헝 enum

value 타입

이름은 대문자 카멜케이스 사용

case는 소문자 카멜케이스 사용

케이스는 한 줄에 여러개도 정의할수 있음

enum Weekday {
    case mon
    case tue
    case wed
    case thu, fri, sat, sun
}

switch 의 비교값에 열거형이 들어가는 경우

switch day {
case .mon, .tue, .wed, .thu:
    print("평일")
case Weekday.fri:
    print("불금!!")
case .sat, .sun:
    print("주말!!")
}
  • 모든 케이스를 작성하지 않는다명 default 필요

원시값: c언어의 enum 처럼 정수값 할당

enum Fruit: Int {
    case apple = 0
    case grape
    case peach
}
print("\\(Fruit.peach.rawValue)")
  • 정수값 말고 다른 타입의 값도 지정할수 있음
  • 원시값 타입이 String일때 case의 값이 지정되지 않으면 case의 이름을 사용

열거형에 메서드도 추가가능

 

클로저

{ (매개변수 목록) -> 반환타입 in
    실행 코드
}
// sum이라는 상수에 클로저를 할당
let sum: (Int, Int) -> Int = { (a: Int, b: Int) in
    return a + b
}
let sumResult: Int = sum(1, 2)
print(sumResult) // 3

코드의 블럭

일급시민으로, 전달인자, 변수, 상수 등으로 저장, 전달이 가능함

콜백함수(함수의 전달인자로 들어가는 함수)처럼 사용가능

후행 클로저

클로저가 함수의 마지막 전달 인자라면 마지막 매개변수 이름을 생략한뒤 함수 소괄호 외부에 클로저를 구현할수 있음

반환타입 생략

컴파일러가 추론가능해서 생략가능. 이경우 in은 생략불가능

단축 인자이름

이름이 불필요한경우 매개변수 순서대로 $0, $1 처럼 표현할수 있음

암시적 반환 표현

클로저가 반환하는 값이 있으면 클로저의 마지막 줄의 결과값은 반환값으로 취급함

한줄로 축약이 가능

'STUDY > Swift & iOS' 카테고리의 다른 글

Swift 문법 기초 6  (0) 2022.06.25
Swift 문법 기초 5  (0) 2022.06.21
Swift 문법 기초 3  (0) 2022.06.13
Swift 문법 기초 2  (0) 2022.06.09
Swift 문법 기초 1  (0) 2022.06.07