본문 바로가기

분류 전체보기

(57)
13. Enumeration Enumeration 연관된 상수들을 하나의 묶음으로 묶은 자료형이 열겨형, 각 상수는 상수라 부르지 않고 Enumeration Case라고 부름 열거형을 사용하는 이유는 코드의 가독성과 안정성이 높아짐 enum TypeName { case caseName case caseName, caseName } enum Alignment { case left case center case right } Alignment.center // center var textAlignment = Alignment.center textAlignment = .left if textAlignment == .center { } switch textAlignment { case .left: print("left") case .rig..
12. Collection Collection 데이터 모음을 효율적으로 처리하기 위해서 사용하는 특별한 자료형 설명 예시 Foundation Collection 콜랙션을 참조 형식으로 사용해야할 때 객채형식의 데이터만 저장 가능 모든 자료형 가능 NSArray, NSDictionary, NSSet Swift Collection 콜랙션을 값 형식으로 사용해야할 때 객체형식, 값 형식 모두 가능 동일한 자료형만 저장 가능 Array, Dictionary, Set Copy - on - write Swift Collection은 값 형식으로 반드시 복사가 필요한 경우만 복사를 실행함, 콜랙션이 변경되지 않는다면 항상 동일한 데이터 사용, 특정 시점에 콜랙션을 변경한다면 그 시점에 복사본을 생성하고 변경사항 적용 Array 데이터를 순서대..
9. Closures Closures 글로벌 스코프에서 단독으로 사용할 수 없음, 함수와 사용방법 등이 비슷하나 차이점은 arugumet label을 사용하지 않음 {(parameters) -> ReturnType in statements } { statements } 파라미터와 리턴이 없는 클로저 작성과 호출 예시 let c = { print("Hello, Swift") } c() // Hello Swift 클로저를 상수 안에 넣는 예시 let c2 = { (str : String) -> String in return "Hello, \(str)" } let result = c2("Closure") print(result) // Hello, Closure 상수 안에 넣은 클로저를 arugumet로 전달, 클로저 자체를 직접 ..
9. Functions Functions 특정 기능을 실행하는 코드 조각, 불필요한 코드의 반복을 줄임 Calling Functions 함수를 호출하는 문법 functionName(parameters) Defining Functions 사용자가 직접 만든 함수 func name(parameters) -> ReturnType { statements } Return Values 리턴 값이 있는 함수, 함수에서 리턴을 선언했다면 리턴 문을 통해 반드시 값을 리턴, 함수가 리턴한 값은 함수를 호출하는 부분으로 전달, 함수 호출식이 표현식이고 함수가 리턴한 값은 표현식의 결과, 함수의 return 형이 선언되어있다면 return 키워드 다음에 표현식을 평가한 후 그 결과를 return 함 func name(parameters) -> R..
8. Optionals Optionals 값을 가지지 않아도 되는 타입 TypeName // Non-optional Type TypeName? // Optional Type Unwrapping 값을 추출하는 과정, optional에 저장된 값을 사용하려면 값을 unwrapping 해야 함, optional 표현식을 unwrapping 하면 non-optional 타입으로 결과를 return Forced Unwrapping 값을 강제적으로 추출하는 과정, nil 이 저장된 상태에서 강제 추출하면 오류가 발생 OptionalExpression! Optional Binding Optional을 안전하게 처리하는 방법 if let name : Type = OptionalExpression { statements } while let ..
7. Control Transfer Statements, Labeled Statements Control Transfer Statements Transfer Control (제어를 전달한다) 현재 실행중인 스코프에서 코드를 중지하고 다음에 실행할 코드를 바로 실행 Break Statements 현재 실행중인 문장을 중지하고 이어지는 다음문장 실행, 반복문과 Switch 문에서 사용, 가장 인접한 문장만 종료 Contiune Statements 반복문에서만 사용, 현재 실행중인 반복을 중지하고 다음 반복을 실행, 가장 인접한 문장에만 영향을 줌 Labeled Statements 특정 문장에 이름을 붙이고 break, continue 를 통해 특정문장을 종료하거나 다음문장으로 실행시킴 Label : statement break Label continue Label outer for i in 1....
6. Loop Statements For-in Loop 지정된 범위, 컬랙션을 반복하거나 열거할 수 있고 중첩도 가능 반복 상수는 range의 lower bound, upper bound 와 동일한 자료형 for loopConstant in Range { statements } for loopConstant in Collection { statements } 반복 상수의 자료형은 Range의 Lower Bound, Upper Bound와 동일 for index in 1...3 { print(index) } // 1, 2, 3 0~9 (10 미포함)에서 3의 배수 첫번째 파라미터에 시작할 범위, 두번째 파라미터에 종료할 범위 (종료할 범위는 실제범위에는 미포함), 세번째 파라미터 배수설정 for num in stride(from : 0, ..
5. Conditional Statements If Statement If 조건을 평가한 후 그 값이 참이면 statements를 실행 if condition { statements } If else if condition { statements } else { statements } If else if if condition { statements } else if condition { statements } else { statements } If 문장은 까다로운 문장에서 -> 느슨한 문장으로, 범위가 좁은 문장에서 -> 범위가 넓은 문장으로 Switch 값의 일치 여부에 따라서 실행할 코드를 결정, pattern이나 value 매칭에 자주 사용됨 switch valueExpression { case pattern: statements case ..