• 함수 (Function)
    • func <함수이름> (<파라미터 이름>: <파라미터 자료형>)-> <리턴형> { ...... }
    • 반환 타입
      • 파라메터 뒤에 "->" 로 반환타입임을 의미할 수 있다
      • 반환 값이 없을 경우 반환 타입을 포함하지 않음
      • 여러 개의 반환 값 정의 시 ","로 구분되는 복수 입력 반환 타입을 가질 수 있음
        • -> (반환이름 : 반환타입, 반환이름 : 반환타입)
      • 반환 타입의 이름은 꼭 정의 하지 않아도 됨
        • 반환값이 정의 되어있지 않은 함수는 void 타입의 특수값을 반환, ()로 쓰여질 수 있는 빈 튜플(Tuple) 요소를 갖고 있지 않은 튜플
    • 파라메터
      • 함수 이름 다음 괄호 안에 ","로 구분되는 복수 입력 파라메터를 가질 수 있음
      • 파라메터를 받지 않는 다고 하여도 함수 이름 뒤에 "()"를 포함해야 함
      • 함수 파라메터는 함수 내에서만 사용 가능 (지역 파라메터 라고도 함)
      • 함수 인수가 어떤 목적인지 지시하기 위해 함수 사용자에게 파라메터 이름을 제공 할 수 있음, 이를 외부 파라메터 이름(External Parameter Names)라고 하며, 지역 파라메터 이름 앞에 공백으로 구분해서 작성하면 된다.
        • func testFunction(EPName aName:String) {...}
      • 지역 파라메터 이름이 적절하다 싶으면 파라메터 이름 앞에 "#"을 붙이게 되면 외부 파라메터 이름으로도 사용 가능(2.0에서 삭제)
      • 파라메터들은 기본값을 가질 수 있음
        • func testFunction(aName:String = "UNNOWN") {...}
      • 가변 개수 파라메터, "..."키워드를 사용하여 특정 타입의 값을 0개 이상 받을 수 있음
        • func testFunction(nums:double...) {...}, 입력 시 : testFunction(1, 2, 3, 4)
        • 내부에는 double[] 타입의 배열로 만들어 짐
        • 함수는 한개의 가변 개수 파라메터를 가질 수 있음
        • 파라메터 목록의 맨 마지막에 배치
        • 기본 값을 가지는 파라메터 맨 마지막에 두어야 함
      • 함수의 파라메터들은 기본적으로 상수들 임, 가변 파라메터를 정의 하려면 "var" 키워드를 접두어로 사용
        • func testFunction(var aName:String = "UNNOWN") {...}
        • 가변 파라메터는 함수 호출 동안만 유지
      • In-Out 파라메터
        • 함수 내에서만 변경되면 원래의 값을 대체함
        • "inout" 키워드를 접두어로 사용
        • 주소연산자 "&" 붙여 파라메터로 넘겨준다 (C/C++ 다뤄 봤음 알 듯)
        • 파라메터로 넘길 수 있는 값은 인수(argument)뿐, 상수나 문자값은 파라메터로 넘길 수 없음
        • 기본 값을 가질 수 없으며, 가변 개수 및 var, let으로 표시 또는 사용할 수 없음
      • 파라메터 이름 앞에 공백과 "_"를 사용하게 되면 함수 사용 시 파라메터 이름을 생략 할 수 있다 (Omitting External Parameter Names, 2.0에 추가)
      •  Optional Tuple Return Types, 2.0에 추가

    • 함수 타입
    • 중첩 함수 


'Swift > Swift Basic (2.0Base)' 카테고리의 다른 글

Optionals  (0) 2014.12.30
튜플(Tuples)  (0) 2014.12.24
로그 출력  (0) 2014.12.23
변수와 상수  (0) 2014.12.23
Swift특징  (0) 2014.12.23
  • Optionals
    • Swift에서 "값이 없음"을 처리하는 새로운 개념
    • nil 값을 가질 수 있는 참조 형식과 값 형식을 옵셔널 형식(Optional Type)이라고 한다.
    • 기본적으로 nil로 초기화 되고, 언제든지 필요한 값을 할당하거나 nil을 재할당 할 수 있음
    • 반대로  nil값을 가질 수 없는 나머지 형식들은 비옵셔널 형식(Non-Optional Type)이라고 한다.
    • 예) 
      • var optionalNum: Int? = nil
      • var optionalStr:String? = "hello"
    • 옵셔널 형식의 값을 사용할 때는 변수명 뒤에 느낌표를 붙여 강제 추출(Forced Unwrapping)연산사를 사용할 수 있다
    • 예)
      • var userName: String? = getName();
      • if userName != nil { println("\(userName!)") }
    • 옵셔널 형식이 항상 유효한 값을 가지는 경우에는 자료형 뒤에 물음표(?) 대신 느낌표(!)를 붙여서 암시적으로 추출되는 옵셔널 형식(Implicitly Unwrapped Optionals)으로 선언할 수 있다.
    • 값이 nil인 경우 런타임 오류가 발생
    • 예)
      • var userName: String!= "kim"
    • 옵셔널 바인딩(Optional Binding)은 nil테스트와 값 추출을 한번의 동작으로 처리해주는 패턴으로 if let 문법을 사용
    • 예)
      • if let userName = getName() { ... }
    • if 문 내에서 값의 조작이 필요할 경우 if var로 선언 가능
    • Nil Coalescing 연산자는 옵셔널 형식에 저장된 값을 추출하거나, 옵셔널 형식이 nil인 경우 사용할 기본값을 지정 한다.
    • 이항 연산자로 a ?? b 와 같은 형태로 사용
    • 왼쪽 피연자에는 옵셔널 형식의 데이터 또는 표현식
    • 오른쪽에는 피연산자가 nil일 경우 리턴할 기본값 또는 표현식 (함수호출이나 연산자가 될 수도 있다)
    • 예)
      • var userName = getName() ?? "Jun"
    • Optional Chaining 정리 중..


'Swift > Swift Basic (2.0Base)' 카테고리의 다른 글

함수  (0) 2015.01.08
튜플(Tuples)  (0) 2014.12.24
로그 출력  (0) 2014.12.23
변수와 상수  (0) 2014.12.23
Swift특징  (0) 2014.12.23
  • 튜플(Tuples)
    • 두 개 이상의 값으로 구성된 복합값을 나타낸다.
    • 형식추론 예 
      • let member = (21, "kim", "seoul", "010-1212-2222")
    • 자료형 명시 예
      • let member: (Int, String, String, String) = (21, "kim", "seoul", "010-1212-2222")
    • 튜플의 각 요소에 저장된 값을 읽을 때는 인덱스를 사용
    • 튜플의 각 요소는 읽기 전용
    • 예 : let memberName = member.1        //kim
    • 각 요소를 개별 상수와 연관시켜 접근하는 방법
      • let (id, name, address, phone) = member
    • "_" 문자를 사용해서 해당값 사용하지 않도록 표시
      • let (id, name, _, _) = member
    • 요소의 이름 지정
      • let member = (id: 21, name: "kim", address: "seoul", phone: "010-1212-2222")
      • let memberId = member.id


'Swift > Swift Basic (2.0Base)' 카테고리의 다른 글

함수  (0) 2015.01.08
Optionals  (0) 2014.12.30
로그 출력  (0) 2014.12.23
변수와 상수  (0) 2014.12.23
Swift특징  (0) 2014.12.23

println() : 출력 후 자동으로 줄바꿈

print() : 출력만 줄바꿈 없음

'Swift > Swift Basic (2.0Base)' 카테고리의 다른 글

함수  (0) 2015.01.08
Optionals  (0) 2014.12.30
튜플(Tuples)  (0) 2014.12.24
변수와 상수  (0) 2014.12.23
Swift특징  (0) 2014.12.23
  • 변수
    • var 키워드 사용
    • 형식추론(Type Inference) 기능 제공
      • 변수를 선언할 때 자료형을 지정하지 않을 시 초기값 제공 필수
      • 초기값 미 제공시 Type annotation missing in pattern 오류 발생
    • 자료형 지정
      • 변수 이름 뒤에 콜론(:)을 붙인 다음 원하는 자료형을 지정
      • 예 : var str: NSString = "hello"
      • 애플의 공식 문서에서는 콜론 뒤에 공백이 추가된 방식 사용
  • 상수
    • let 키워드 사용
    • 문법은 변수와 동일
    • 초기값 지정은 필수


'Swift > Swift Basic (2.0Base)' 카테고리의 다른 글

함수  (0) 2015.01.08
Optionals  (0) 2014.12.30
튜플(Tuples)  (0) 2014.12.24
로그 출력  (0) 2014.12.23
Swift특징  (0) 2014.12.23
  • Swift 특징
    • Main 함수가 존재하지 않는다.
    • 세미콜론(;)은 선택사항
    • 변수(Variable) - var, 상수(Constant) - let를 선언하는 새로운 키워드 도입
    • 형식 추론(Type Inference) 지원 (예: var name:String = "Kim")
    • 변수나 상수의 이름에 유니코드 문자 사용가능 (한글 뿐만 아니라 아이콘 등 유니코드에 해당되는 모든 문자 사용가능)
    • 문자열과 문자는 모두 큰따옴표("")를 사용
    • 확장 가능한 새로운 이름의 자료형 제공
    • 헤더 파일이 없음
    • Objective-C와 함께 사용 가능
    • ARC를 기본 메모리 관리 모델로 채택
    • 서브스크립트 문법을 다양한 자료형에서 사용
    • 구조체와 열거형의 기능의 확장 (문자열이나 실수를 원시값으로 가질 수 있음, 다양한 정보를 연관값으로 지정)
    • 구조체, 열거형, 클래스는 선언 내부에 또 다른 구조체, 열거형, 클래스를 중첩해서 선언 가능
    • 제네릭(Generic)을 통해 자료형에 의존하지 않는 범용 코드를 작성하여 코드의 새사용성을 높일 수 있음


'Swift > Swift Basic (2.0Base)' 카테고리의 다른 글

함수  (0) 2015.01.08
Optionals  (0) 2014.12.30
튜플(Tuples)  (0) 2014.12.24
로그 출력  (0) 2014.12.23
변수와 상수  (0) 2014.12.23

+ Recent posts