본문 바로가기

Swift 열거형 (Enum) Swift 열거형 (Enum) : 변수가 가질 수 있는 값들을 나열해 놓은 타입. : 값의 종류가 일정 범위로 정해져 있는 경우 적합. 열거형 형식 enum 열거형이름{ case 가능값1 case 가능값2 case 가능값3, 가능값4, 가능값5 } 예시 변수가 열거형을 받는 방식은 선언 시 변수명 옆에 : 열거형이름 을 명시하면 된다. var 서울에서거제 : 방향 열거형을 받은 변수는 열거형에 나열된 값만 가질 수 있다. 원시값(raw value) C언어에서는 default로 열거형 자료에 정수형으로 숫자를 부여한다. Swift 에서는 기본적으로 사용하지 않는다. 사용하고자 할 때에는 열거형명 : Int 이렇게 따로 명시해야 한다. : Int를 적어 정수형 rawValue를 사용함을 명시했다. 첫번째 c..
Swift 클로저(Closure) Swift 클로저(Closure) : Swift에서 클로저란 {} 형식의 '코드블럭'이다. 코드 안에서 사용될 수도 있고 매개변수로 전달 될 수도 있다. 클로저 형식 클로저 형식은 위 그림과 같다. 중괄호{} 안에 함수 형식과 유사하게 작성하면 된다. in 문장 안에 코드블럭의 실질적인 내용이 적힌다. 클로저 예시 Int 매개변수를 인자로 받아 단순히 *2 한 값을 반환하는 doubler 함수를 작성하였다. [1,2,3,4,5] 5개의 요소를 가지는 Int형 배열을 선언하고 array.map()의 매개변수로 doubler 함수를 전달하였다. array.map()의 매개변수로 '클로저'로 doubler 함수의 내용을 구현하여 전달하였다. 둘의 결과는 [2, 4, 6, 8, 10]으로 당연하게도 서로 동일하..
Swift 중첩함수 Swift 중첩함수 Swift 는 함수 내부에 또 다른 함수 생성 가능 (중첩함수) 내부의 중첩된 함수는 바깥쪽 함수에 선언된 변수를 사용할 수 있다. (물론 외부함수의 인자에도 접근 가능) 중첩함수의 호출은 함수 내부에서만 가능하다. ==> 내부적으로 은닉 가능. 내부함수는 외부함수가 실행되는 순간 생성되고, 종료되는 순간 소멸된다. 외부함수를 호출했을 때 내부함수를 반환하여 외부에서 사용하는 것도 가능하다. (값에 따라 다른 함수를 반환하는 것도 구현 가능) 함수 안에 함수를 선언한다는 것일 뿐, 함수 선언 방식은 동일하므로 일반적인 함수 작성 코드는 따로 작성하진 않겠다. 다만 내부 함수를 반환할 때 외부함수의 반환타입 명시 예시를 들자면 다음과 같다. 외부함수의 선언문:func IncDec(wan..
Swift 제너릭 (Generic) Swift 제너릭 (Generic) 자료형에 의존하지 않는 알고리즘만 작성된 함수 (C++에서는 Templete 함수라고 함!) Swift 배열을 써봤다면 같은 자료형이 아니더라도 배열에 담기는 것을 알 수 있다. Swift의 Array Library가 제너릭으로 작성되었기 때문이다. 그밖에도 Stack, Queue 등 자료형에 의존하지 않는 알고리즘을 필요로 하는 데에 제너릭이 사용된다. (자료형에 의존한다면 똑같은 기능을 함에도 자료형별로 다 따로 선언해야함..-_-;;;) ex) 사실 Swift에는 '튜플'을 이용하면 되므로 별도의 swap함수를 만들지 않아도 된다. ( var1 = (p1,p2), var2 = (p2, p1) ) 제너릭 사용 예를 들기 위해 swap함수를 작성함. func swap..
Swift 함수 기초 Swift 함수 기초 함수는 어떤 작업을 수행하는 코드의 그룹이다. 기능별로 나누어 그것을 각각의 함수로 작성한다면 가독성 증대 및 유지관리가 쉽다. 기본적인 함수 형태 Swift에서 함수의 정의는 다음과 같다. func 함수이름(인자레이블: 자료형, 인자레이블: 자료형, ... ) -> (반환자료형) { 함수 내용 return 반환값 } 기본적인 함수를 선언해 봤다. 인자는 num이라는 레이블에 Int 값을 받아서,10증가 후 결과 Int 값을 반환하는 함수이다. 함수 중복 정의 : 매개변수가 다르다면 이름이 같은 함수를 중복정의 할 수 있다. 똑같은 이름의 greet 함수가 2개이다. String 타입 매개변수 하나만 받는 경우 String 타입 매개변수 2개를 받는 경우 이처럼 매개변수가 다르다면 ..
[Swift 기초] switch case 문 [Swift 기초] switch case 문 switch- case문도 C언어와 크게 차이 없다. 다만 C 언어에서는 case마다 종료 시 break 명령어를 적어줬어야 했다.적어주지 않을 경우에는 다음 case에 해당하는 명령어까지 실행하는 fallthrough가 자동으로 적용된다. Swift에서는 fallthrough를 기본으로 지원하지 않으므로 Case마다 break를 적을 필요가 없다.대신 falltrhough 되기를 원한다면 case에 fallthrough 명령어를 써줘야 한다. range로도 case를 줄 수 있다. 예아!쉼표를 이용해서 하나의 케이스에 여러 값 두기 Swift에서는 쉼표를 이용하여 하나의 케이스에 여러 값을 둘 수 있다. (...를 이용한 연속적인 값이 아니라도 되는군!) 여..
[Swift 기초] while, repeat while 문 [Swift 기초] while, repeat while 문 C 언어와 워낙 유사해서 따로 다룰 게 딱히 없다. while 반복조건 {조건 성립 시 수행할 명령어들} repeat{수행할 명령어들} while 반복조건 여기서 while과 repeat while의 결과는 동일하다. while과 repeat while의 차이는 무엇일까?while : 반복문 시작 시, 조건이 성립하지 않는다면 애초에 실행도 안함repeat while : 반복문 시작 시 일단 실행시키고 봄. 따라서 조건에 안맞더라도 최소한 1번은 실행됨.
for문 Swift for문 자바스크립트가 떠오른다. [ for문 일반적 사용법 ]for index in 1...10(1에서10까지)== for(int i=0; i