목록분류 전체보기 (179)
study record
구조체 구조체 정의 구조체는 struct 키워드로 정의한다. 구조체를 정의하는 것은 새로운 타입을 생성하는 것과 마찬가지이므로 이름을 대문자 카멜케이스를 사용하여 지어준다. 프로퍼티와 메서드는 소문자 카멜케이스를 사용하여 짓는다. struct BasicInformation { var name: String var age: Int } 구조체 인스턴스의 생성 및 초기화 var asongInfo: BasicInformation = BasicInformation(name: "asong", age: 99) asongInfo.age = 100 asongInfo.name = "yagom"
구조체와 클래스는 프로그래머가 데이터를 용도에 맞게 묶어 표현하고자 할 때 사용한다. 구조체와 클래스는 프로퍼티와 메서드를 사용하여 구조화된 데이터를 사용할 수 있다. 새로운 사용자 정의 데이터 타입을 만드는 것이다. 구조체와 클래스의 큰 차이점은 구조체의 인스턴스는 값 타입이고, 클래스의 인스턴스는 참조 타입이라는 것이다. 또한 클래스는 참조타입이다. 일부 프로그래밍 언어는 소스파일 하나에 구조체 또는 클래스 하나만 선언할 수 있으나, 스위프트는 소스파일 하나에 여러 개의 구조체와 여러 개의 클래스를 정의하고 구현해도 된다. 또한 구조체 안에 구조체, 클래스 안에 클래스와 같이 중첩 타입의 정의 및 선언이 가능하다.
옵셔널은 단어 뜻 그대로 값이 있을 수도, 없을 수도 있음을 나타내는 표현이다. 옵셔널을 읽을 때, 해당 변수 또는 상수에는 값이 없을 수도 있다. 즉, 변수 또는 상수가 nil일 수 있으니 사용에 주의하라는 뜻으로 받아들일 수 있다. 옵셔널 사용 옵셔널 변수 또는 상수가 아니면 nil을 할당할 수 없다. 옵셔널 변수 또는 상수는 데이터타입 뒤에 물음표(?)를 붙여 표현한다. 옵셔널을 사용하는 상황 오류 발생시 간단히 nil을 반환해서 오류가 있음을 알릴 수 있다. 매개변수를 굳이 넘기지 않아도 된다는 뜻으로 매개변수 타입을 옵셔널로 정의할 수 있다. 옵셔널은 열거형으로 구현되어 있다. 옵셔널 추출 옵셔널의 값을 옵셔널이 아닌 값으로 추출한다. 옵셔널 강제 추출 가장 간단하지만 가장 위험한 방법이다. 런..
매개변수 이름과 전달인자 레이블 함수의 매개변수 이름과 더불어 전달인자 레이블을 지정해줄 수 있다. 전달인자 레이블을 별도로 지정하면 함수 외부에서 매개변수의 역할을 좀 더 명확히 할 수 있다. func 함수 이름(전달인자 레이블 매개변수 이름: 매개변수 타입, 전달인자 레이블 매개변수 이름: 매개변수 타입) -> 반환 타입 { 실행 구문 return 반환 값 } // from, to 라는 전달인자 레이블이 있으며 // myName과 name이라는 매개변수 이름이 있는 sayHello 함수 func sayHello(from myName: String, to name:String) -> String { return "HEllo \(name) ! I'm \(myName)" } print(sayHello(fr..