본문 바로가기

교육/Swift

(30)
[swift] enum 1. enumerator연속하는 자료를 가지는 상수 집합 2. 샘플코드// enum// 기본모양//enum {Mon,Tue} // c스타일 // 이름 꼭 써야하고 각 항목 case//enum Days {// case Mon// case Tue//} // case쓰기 귀찮으면 ,로 이어가자enum Days { case Mon,Tue, Wed, Thu, Fri, Sat, Sun} // 정수형 상수가 아닌, 하나의 독립된 타입으로 인식var day = Days.Mon showType(day) //day = 1 // 에러day = Days.Mon //enum값 중 하나를 꼭 넣어야함day = .Mon // 이렇게 넣어도 된다. // 값을 가지는 enumenum Shape : Int { case Rect = 0,..
[swift] 클로저 1. 클로저익명의 함수함수 이름없이 함수 구현objc의 block 2. 샘플 코드// Closure, Lambda, Block, Annonymous Function// 모두 비슷한 개념 // Closure : 익명의 함수 개념func Sort(inout ar : Array , compare : (Int, Int)->Bool){ for i in 0...ar.count-2 { for j in i+1...ar.count-1 { // if ar[i] > ar[j] if compare(ar[i], ar[j]) // 사용자가 인자로 결정 { let temp = ar[i] ar[i] = ar[j] ar[j] = temp } } }}// Sort에 전달할 비교함수 둘func cmp1(a:Int, _ b:Int) -> ..
[swift] 함수 고급 1. 함수 타입 func Add( a : Int, _ b : Int )->Int 와 같은 함수의 타입은(Int, Int) -> Int 이다.이 함수타입을 인자로 가질수도 있다. 2. 함수 내부에 함수 선언함수내부에 함수 선언이 가능하며 외부 함수의 변수를 사용 가능하다. 3. 샘플코드// 함수 고급func Add( a : Int, _ b : Int )->Int{ print("Add") return a+b}showType(Add) // (Int,Int) -> Int var fp1 :(Int,Int)->Int = Add // c의 함수 포인터 개념fp1(1,2) // Add(1,2) var fp2 = Addfp2(2,3) // 함수 타입을 인자로 가지는 함수//func foo( f : (Int, Int)->..
[swift] 제어문 1. 제어문case에 따른 분기처리를 위해 사용 2. 샘플 코드// 제어문 //if 다른언어와 거의 동일 var n = 10 if n == 10{ }else if n == 20{ } // switch => 많은 변화// double과 문자열 가능// break 필요없다. fallthrough 개념 추가// default 반드시 만들어야한다.var s = "Kim" switch s{case "Kim": print("ㅏ"); fallthrough // 밑에거도 실행해달라default: print("a")} // tuple 매칭var t1 = (1, 32)switch t1{case (1,32) : print("1")case (1,_) : print("2")case (1,let y) : print("3")cas..
[swift] 반복문 1. 반복문loop를 돌려 원하는 코드를 구현하는 방법 2. 샘플 코드 // 반복문 // forvar i = 0 for(i = 0; i 0{ print(idx) idx -= 1} idx = 10 repeat{ print(idx) idx -= 1}while idx>0 // break, continue, return // labeled ..
[swift] dictionary 1. dictionary키 값으로 value를 가져올 수 있는 자료구조 2. 샘플 코드// dictionary var dic1 : Dictionary = ["mon":"월요일", "tue":"화요일"] // 해쉬 var dic2 = ["mon":"월요일", "tue":"화요일"] var dic3:[Int:Int] = [:] // []로 값 꺼내기var val = dic2["fri"] ?? "없음"print(val) print(dic2)// 값 넣기dic2["mon"] = "monday" // updatedic2["sun"] = "sunday" // insertprint(dic2) var ret = dic2.updateValue("목요일", forKey: "thu")showType(ret)if ret ==..
[swift] 배열 1. 배열같은 타입의 자료들을 저장하는 자료구조 2. 샘플 코드 // 배열 var arr1 : Array = [1,2,3] // 정확한 모양var arr2 :[Int] = [1,2,3]var arr3 = [1,2,3]var arr4 = [] // __NSArray0, objectiveC의 NSArray 호환 타입var arr5 : [Int] = [] showType(arr3)showType(arr2)showType(arr4)showType(arr5) // 주의var t1 = (1,2,3) // tuple (다른 타입)var a1 = [1,2,3] // array (같은 타입) // 멤버 함수 활용print(a1.isEmpty)print(a1.count) a1.append(4) var a2 = a1 + a..
[swift] 문자열 1. 샘플코드// 문자열 var s1 = "hello"var s2 = s1 + " world" // + 가능print(s2) // 멤버 함수 및 속성 활용// string.characters.함수(속성)에 쓸만한 함수가 많다.print(s2.characters.count) // 문자열 비교 == s1.eqaul(s2)// 객체 100번지 p1 p2 200번지 둘다 내부적으로 "abcd" ==하면 포인터만 비교 근데 swift는 값 비교 그래서 걍 씀// 문자열은 값 타입. 보통 언어에서 값타입 비교는 == 사용한다. if s1 == s2{ print("같은 문자열")} // 문자열 순회 - for in으로 s2의 문자하나씩for ch in s2.characters{ print(ch);} // 포멧 문자열..