[swift 기초문법] - 함수(Method), 구조체(Struct), 클래스(Class)
함수
함수를 매개변수나, 반환 타입으로 사용이 가능합니다.
함수 안에 함수 구현이 가능합니다.
데이터 타입으로 사용이 가능합니다. (매개변수 타입 나열 -> 반환 타입)
func hellofunc(name: String, age: Int) -> String{ }
//(String, Int) -> String 타입
매개변수
매개변수에 매개변수 이름뿐만 아니라 전달인자 레이블까지 지정 가능
func 함수명 (매개변수 이름 전달인자 레이블 : 매개변수타입, 매개변수 이름 전달인자 레이블 : 매개변수 타입...) ->반환 타입 {
return 반환값
}
함수 내부에서는 매개변수 레이블을 사용합니다.
호출할 때는 매개변수 이름을 사용합니다.
매개변수 이름을 사용하고 싶지 않으면 와일드 카드(_)를 사용합니다.
매개변수 이름만 바꿔서 오버로드가 가능합니다.
기본값 세팅 가능
func testfunc(_name: String, age: Int = 23) -> String {...
가변 매개변수
func testfunc(group title: String, member name: String... ) -> String {...
비반환 함수
종료되지 않는 함수
오류보고에 사용
func crashAndBurn() -> Naver{
fatalError("Something is wrong")
}
구조체(Struct)
구조체의 인스턴스는 값 타입
구조체 안에 구조체 선언 가능
let으로 선언하면 프로퍼티 값 못 바꿈
정의
struct 구조체 이름{
프로퍼티 & 메서드
}
클래스(Class)
클래스의 인스턴스는 참조 타입입니다.
클래스 안에 클래스 선언 가능
상속 없이 단독 정의 가능
let으로 선언해도 참조 타입이므로 프로퍼티 값들 변경 가능
정의
class 클래스 이름 {
프로퍼티 & 메서드
}
디이니셜라이져(Deinitializer)
class가 소멸 전 호출됩니다.
class당 하나씩만 있습니다.
deinit {
//내용
}
구조체와 클래스의 공통점
1. 프로퍼티를 정의 가능
2. 메서드 정의 가능
3. 서브스크립트 정의 가능
4. 이니셜라이저 정의 가능
5. 익스텐션 가능
6. 프로토콜 준수 가능
구조체와 클래스의 차이점
1. 구조체는 상속 불가능
2. 타입캐스팅은 클래스만 가능
3. 디이니셜라이저는 클래스만 가능
4. 레퍼런스 카운팅은 클래스만 가능
#swift 기초
#swift 강의
#ios programming
'IT > Swift' 카테고리의 다른 글
[swift] Closure, Capture list (0) | 2018.04.02 |
---|---|
[swift] Mutating, Memberwise Initializers, Access Control (0) | 2018.03.13 |
[swift] Property (0) | 2018.03.12 |
[swift] Optional, Optional Chaining (0) | 2018.03.08 |
[swift] Operator, Flow Control (0) | 2018.03.06 |