From 826ea6c4189b0e98229d2e0d63744ea13f7836cb Mon Sep 17 00:00:00 2001 From: smc219 <31872014+smc219@users.noreply.github.com> Date: Mon, 6 Nov 2017 20:23:20 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=84=9D=EB=AF=BC=EC=B0=BD=20=EB=8F=99?= =?UTF-8?q?=EC=98=81=EC=83=81=20=EA=B0=95=EC=9D=98=20=EC=88=98=EA=B0=95=20?= =?UTF-8?q?=EA=B3=BC=EC=A0=9C=EC=9E=85=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 7 + .../BareBasic/Base.lproj/Main.storyboard | 21 +- .../contents.xcworkspacedata | 7 + .../HelloiPhone/Base.lproj/Main.storyboard | 19 +- .../contents.xcworkspacedata | 7 + .../contents.xcworkspacedata | 7 + MeetingRooms_seokminchang.zip | Bin 0 -> 42820 bytes MoneyConverter_seokminchang.zip | Bin 0 -> 37578 bytes .../contents.xcworkspacedata | 7 + .../MeetingRooms/Base.lproj/Main.storyboard | 126 ++- .../contents.xcworkspacedata | 7 + .../Base.lproj/Main.storyboard | 228 +++--- .../contents.xcworkspacedata | 7 + Session2_seokminchang/Contents.swift | 134 ++++ Session2_seokminchang/contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 + meetingRoomDynamic_seokminchang.zip | Bin 0 -> 81224 bytes .../Contents.swift | 750 ++++++++++++++++++ .../contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 + .../Contents.swift | 288 +++++++ .../contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 + .../timeline.xctimeline | 11 + 24 files changed, 1453 insertions(+), 206 deletions(-) create mode 100644 Chapter1/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Chapter1/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 MeetingRooms_seokminchang.zip create mode 100644 MoneyConverter_seokminchang.zip create mode 100644 SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Session2_seokminchang/Contents.swift create mode 100644 Session2_seokminchang/contents.xcplayground create mode 100644 Session2_seokminchang/playground.xcworkspace/contents.xcworkspacedata create mode 100644 meetingRoomDynamic_seokminchang.zip create mode 100644 session2_seokminchang.playground/Contents.swift create mode 100644 session2_seokminchang.playground/contents.xcplayground create mode 100644 session2_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 swiftFunctionType_seokminchang.playground/Contents.swift create mode 100644 swiftFunctionType_seokminchang.playground/contents.xcplayground create mode 100644 swiftFunctionType_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 swiftFunctionType_seokminchang.playground/timeline.xctimeline diff --git a/Chapter1/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Chapter1/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Chapter1/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Chapter1/BareBasic/BareBasic/Base.lproj/Main.storyboard b/Chapter1/BareBasic/BareBasic/Base.lproj/Main.storyboard index 090b02d..f93fb1a 100644 --- a/Chapter1/BareBasic/BareBasic/Base.lproj/Main.storyboard +++ b/Chapter1/BareBasic/BareBasic/Base.lproj/Main.storyboard @@ -1,7 +1,12 @@ - - + + + + + - + + + @@ -18,21 +23,19 @@ - - + + - - + - diff --git a/Chapter1/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Chapter1/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Chapter1/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard b/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard index f46a720..a4e7cc5 100644 --- a/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard +++ b/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard @@ -1,7 +1,12 @@ - - + + + + + - + + + @@ -18,24 +23,22 @@ - - + - diff --git a/Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata b/Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata b/Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/MeetingRooms_seokminchang.zip b/MeetingRooms_seokminchang.zip new file mode 100644 index 0000000000000000000000000000000000000000..0fec83d02d433feb58713cf96d43462a8cc66bbe GIT binary patch literal 42820 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 Kv#i+#{^>8shFXjO literal 0 HcmV?d00001 diff --git a/MoneyConverter_seokminchang.zip b/MoneyConverter_seokminchang.zip new file mode 100644 index 0000000000000000000000000000000000000000..f8f6fd87fbc80716dc83949108ce0580712c1c04 GIT binary patch literal 37578 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

Xlkcd3V;XPommOD;7vq=PHyszE2Zp0IiR*Xn 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 literal 0 HcmV?d00001 diff --git a/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard b/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard index eae1517..63bd243 100644 --- a/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard +++ b/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard @@ -1,8 +1,12 @@ - - + + + + + - + + @@ -12,22 +16,20 @@ - - + - - + @@ -35,14 +37,13 @@ - - + @@ -51,113 +52,97 @@ - + - - - + - - - + - - - + - - @@ -167,85 +152,73 @@ - + - - - + - - - + - - @@ -257,7 +230,6 @@ - diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard index 5958a44..efbba11 100644 --- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard +++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard @@ -1,9 +1,13 @@ - - + + + + + - + + @@ -11,15 +15,15 @@ - + - + - + - + @@ -49,15 +53,15 @@ - + - + - + - + @@ -81,29 +85,29 @@ - + - + - + - + @@ -130,79 +134,79 @@ - + - + - + - + - + - + - + - + @@ -213,48 +217,48 @@ - + - + - + - + @@ -265,17 +269,17 @@ - + - + @@ -306,28 +310,28 @@ - + - + - + - + - + @@ -341,22 +345,22 @@ - + - + - + @@ -370,21 +374,21 @@ - + - + - + @@ -398,20 +402,20 @@ - + - + - + @@ -426,20 +430,20 @@ - + - + - + @@ -489,7 +493,7 @@ - + @@ -506,29 +510,29 @@ - + - + - + - + @@ -553,7 +557,7 @@ - + @@ -573,17 +577,17 @@ - + - + @@ -595,7 +599,7 @@ - + @@ -622,9 +626,9 @@ - + - + @@ -641,9 +645,9 @@ - + - + @@ -660,9 +664,9 @@ - + - + @@ -677,7 +681,7 @@ - + @@ -698,7 +702,7 @@ - + @@ -715,29 +719,29 @@ - + - + - + - + @@ -767,7 +771,7 @@ - + diff --git a/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Session2_seokminchang/Contents.swift b/Session2_seokminchang/Contents.swift new file mode 100644 index 0000000..964b482 --- /dev/null +++ b/Session2_seokminchang/Contents.swift @@ -0,0 +1,134 @@ +//: Playground - noun: a place where people can play + +import UIKit + +var str = "Hello, playground" +//2강-2 + print("\(str)") + /* 변하지 않는 값을 정할때 사용되는 것이 상수, 변하는 값을 정할때 사용하는 것이 변수 */ + + let maxSpeed = 200 + //maxSpeed += 10 + + var currentSpeed = 110 + currentSpeed += 10 + + //한번 정의내린 것은 끝까지 유지된다. 지금 위의 것은 콜론과 인트가 생략되어 있는 것이다. 스위프트는 추론해서 자동으로 내보내준다. 이를 type inferring이라고 한다. + //currentSpeed += 20.5 > 이러한 엄격함이 스위프트의 특징 중 하나이다. + + +//★2강-3 String과 Numbers + +let name = "Seongkwan" + var greeting = "Hello" + //여기서도 type inferring이 일어나고 있는 것이다. + + greeting += " " + name + + let characters = name.characters // characters 함수의 경우에는 문자열 하나하나에 접근 가능한 array함수와 유사한 상태로 만들 수 있다. + let count = characters.count //count는 글자 갯수의 이야기. + + let url = "www.codershigh.com" + //http 프로토콜인지 아닌지를 탐색할 수 있는 변수를 만들어 보자. + let hasProtocol = url.hasPrefix("http://") + print("\(name)") + + //숫자 + + //let maxSpeed = 200 // + //maxSpeed += 10 + + //var currentSpeed = 110 + currentSpeed += 10 + currentSpeed += Int(20.5) + //굳이 어떻게든 20.5를 currentSpeed에 더하고 싶다면 위와 같은 방법이 있기는 하다. + + let intMax = Int.max + let UintMax = UInt.max + let intMin = Int.min + let UintMin = UInt.min + + let pi = 3.14 + //let halfPi = 3.14/2 + let divider = 2 + //let halfPi = 3.14/divider > divider가 int값이기 때문에 에러가 발생 + + let halfPi = pi/Double(divider) + +//★ 2강-4 +//Tupel '()'로 표현한다. + let time1 = (9, 0, 48) + + //time1.0 + + let time2:(h:Int, m:Int, s:Int) = (11, 51, 5) + time2.h + time2.m + time1.2 + + let duration = (time1, time2) // 튜플은 이중으로 정리하는 것 역시 가능하다. + + let (start, end) = duration + let endHour = end.h + //튜플은 우리가 즉시 원하는 값을 정의하고, 꺼내쓸 수 있다.typealias와 쓰면 그 효용성이 증가. + //type alias는 간단한 타입의 지정이라고 할 수 있다. + typealias Time = (h:Int, m:Int, s:Int) + typealias Duration = (start:Time, end:Time) + let today:Duration = ((9, 10, 23), (17, 8, 21)) + print("We studied \(today.end.h - today.start.h) hour today.") + +//★ 2강 - 5 +//array : 순서를 가지고 있는 값들의 배열 + +var meetingRooms:Array = ["Bansky", "Rivera", "Kahlo", "Picasso", "Cezanne", "Matisse" ] + //array 만드는 법 1 : 'declaration' 'name':Array<'type'> + var groups:[Int] = [10, 8, 14, 9] + //array 만드는법 2 : []안에 엘레멘트 타입을 선언해주면 된다. + + meetingRooms += ["Renoir"] //array에는 값을 더하는 것이 가능. + + //let maxSpeed = 200 + + + //var currentSpeed = 110 + currentSpeed += 10 + + var speedHistory:[Int] = [] + speedHistory += [currentSpeed] + let gpsSpeed0901 = 114.1 + // speedHistory.append(gpsSpeed0901) // 이렇게 하면 에러가 난다. gpsSpeed0901은 더블 값이기 때문 + speedHistory.append(Int(gpsSpeed0901)) + + speedHistory[1] //array값에 접근하는 방법 1 + speedHistory.first //~ 2 + speedHistory.last // ~3 + + let historyBackup = speedHistory // 이때 값이 바로 복사되지 않는다 + speedHistory += [150] //값이 바뀌는 순간 위에 있는 애가 복제된다. + historyBackup + //새로운 어레이에 어레이를 할당하면 어레이는 복사된다. 정확히는 원본 어레이가 복사되는 순간에 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Session2_seokminchang/contents.xcplayground b/Session2_seokminchang/contents.xcplayground new file mode 100644 index 0000000..5da2641 --- /dev/null +++ b/Session2_seokminchang/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Session2_seokminchang/playground.xcworkspace/contents.xcworkspacedata b/Session2_seokminchang/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Session2_seokminchang/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/meetingRoomDynamic_seokminchang.zip b/meetingRoomDynamic_seokminchang.zip new file mode 100644 index 0000000000000000000000000000000000000000..42c7fd4a8e4550d440e3cb4768c003efa24cf7c1 GIT binary patch literal 81224 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 UJB@+C9tfQk7#QBm0NW`H05#wbcK`qY literal 0 HcmV?d00001 diff --git a/session2_seokminchang.playground/Contents.swift b/session2_seokminchang.playground/Contents.swift new file mode 100644 index 0000000..11fb5c1 --- /dev/null +++ b/session2_seokminchang.playground/Contents.swift @@ -0,0 +1,750 @@ +//: Playground - noun: a place where people can play + +import UIKit + +var str = "Hello, playground" + + +//2강-2 +print("\(str)") +/* 변하지 않는 값을 정할때 사용되는 것이 상수, 변하는 값을 정할때 사용하는 것이 변수 */ + +let maxSpeed = 200 +//maxSpeed += 10 + +var currentSpeed = 110 +currentSpeed += 10 + +//한번 정의내린 것은 끝까지 유지된다. 지금 위의 것은 콜론과 인트가 생략되어 있는 것이다. 스위프트는 추론해서 자동으로 내보내준다. 이를 type inferring이라고 한다. +//currentSpeed += 20.5 > 이러한 엄격함이 스위프트의 특징 중 하나이다. + + +//★2강-3 String과 Numbers + +let name = "Seongkwan" +var greeting = "Hello" +//여기서도 type inferring이 일어나고 있는 것이다. + +greeting += " " + name + +let characters = name.characters // characters 함수의 경우에는 문자열 하나하나에 접근 가능한 array함수와 유사한 상태로 만들 수 있다. +let count = characters.count //count는 글자 갯수의 이야기. + +let url = "www.codershigh.com" +//http 프로토콜인지 아닌지를 탐색할 수 있는 변수를 만들어 보자. +let hasProtocol = url.hasPrefix("http://") +print("\(name)") + +//숫자 + +//let maxSpeed = 200 // +//maxSpeed += 10 + +//var currentSpeed = 110 +currentSpeed += 10 +currentSpeed += Int(20.5) +//굳이 어떻게든 20.5를 currentSpeed에 더하고 싶다면 위와 같은 방법이 있기는 하다. + +let intMax = Int.max +let UintMax = UInt.max +let intMin = Int.min +let UintMin = UInt.min + +let pi = 3.14 +//let halfPi = 3.14/2 +let divider = 2 +//let halfPi = 3.14/divider > divider가 int값이기 때문에 에러가 발생 + +let halfPi = pi/Double(divider) + +//★ 2강-4 +//Tupel '()'로 표현한다. +let time1 = (9, 0, 48) + +//time1.0 + +let time2:(h:Int, m:Int, s:Int) = (11, 51, 5) +time2.h +time2.m +time1.2 + +let duration = (time1, time2) // 튜플은 이중으로 정리하는 것 역시 가능하다. + +let (start, end) = duration +let endHour = end.h +//튜플은 우리가 즉시 원하는 값을 정의하고, 꺼내쓸 수 있다.typealias와 쓰면 그 효용성이 증가. +//type alias는 간단한 타입의 지정이라고 할 수 있다. +typealias Time = (h:Int, m:Int, s:Int) +typealias Duration = (start:Time, end:Time) +let today:Duration = ((9, 10, 23), (17, 8, 21)) +print("We studied \(today.end.h - today.start.h) hour today.") + +//★ 2강 - 5 +//array : 순서를 가지고 있는 값들의 배열 + +var meetingRooms:Array = ["Bansky", "Rivera", "Kahlo", "Picasso", "Cezanne", "Matisse" ] +//array 만드는 법 1 : 'declaration' 'name':Array<'type'> +var groups:[Int] = [10, 8, 14, 9] +//array 만드는법 2 : []안에 엘레멘트 타입을 선언해주면 된다. + +meetingRooms += ["Renoir"] //array에는 값을 더하는 것이 가능. + +//let maxSpeed = 200 + + +//var currentSpeed = 110 +currentSpeed += 10 + +var speedHistory:[Int] = [] +speedHistory += [currentSpeed] +let gpsSpeed0901 = 114.1 +// speedHistory.append(gpsSpeed0901) // 이렇게 하면 에러가 난다. gpsSpeed0901은 더블 값이기 때문 +speedHistory.append(Int(gpsSpeed0901)) + +speedHistory[1] //array값에 접근하는 방법 1 +speedHistory.first //~ 2 +speedHistory.last // ~3 + +let historyBackup = speedHistory // 이때 값이 바로 복사되지 않는다 +speedHistory += [150] //값이 바뀌는 순간 위에 있는 애가 복제된다. +historyBackup +//새로운 어레이에 어레이를 할당하면 어레이는 복사된다. 정확히는 원본 어레이가 복사되는 순간에 + + + +//★2강 - 6: dictionary +/* + //dictinary는 값에 이름을 붙여 저장하는 것. + var meetingRooms:Array = ["Bansky", "Rivera", "Kahlo", "Picasso", "Cezanne", "Matisse" ] + //array 만드는 법 1 : 'declaration' 'name':Array<'type'> + var groups:[Int] = [10, 8, 14, 9] + //array 만드는법 2 : []안에 엘레멘트 타입을 선언해주면 된다. + + meetingRooms += ["Renoir"] //array에는 값을 더하는 것이 가능. + + let maxSpeed = 200 + + + var currentSpeed = 110 + currentSpeed += 10 + + var speedHistory:[Int] = [] + speedHistory += [currentSpeed] + let gpsSpeed0901 = 114.1 + // speedHistory.append(gpsSpeed0901) // 이렇게 하면 에러가 난다. gpsSpeed0901은 더블 값이기 때문 + speedHistory.append(Int(gpsSpeed0901)) + speedHistory[1]//array값에 접근하는 방법 1 var string = "Hello, playground" + speedHistory.first //~ 2 + speedHistory.last // ~3 + + let historyBackup = speedHistory // 이때 값이 바로 복사되지 않는다 + speedHistory += [150] //값이 바뀌는 순간 위에 있는 애가 복제된다. + historyBackup + + var roomCapacity: [String: Int] = ["Bansky": 4, "Rivera": 8, "Kahlo": 4 , "Picasso": 10, "Cezanne": 20, "Matisse": 30 ] + //roomCapacity += ["Renoir"] // dictionary에서는 어레이의 문법으로 더하는 이런걸 못합니다. + roomCapacity["Renoir"] = 40 + print(roomCapacity) + //roomCapacity.values // 뭔지 모르겠는데 안됨 + roomCapacity.count + roomCapacity + var Name:[String] = [] + var Capacity:[Int] = [] + for (name, capacity) in roomCapacity { + + Name.append(name) + Capacity.append(capacity) + } + + Name + + let roomNames = [String](roomCapacity.keys) + let capacities = [Int](roomCapacity.values) + + let total = capacities.reduce(0, +) + + //set. 순서를 가지고 있지 않은 컬렉션 + + let subway2 :Set = ["시청","을지로입구","을지로3가","을지로4가","동대문역사문화공원","신당","상왕십리","한양대","뚝섬","성수","건대입구","구의","강변","잠실나루","잠실","신천","종합운동장","삼성","선릉","역삼","강남","교대","서초","방배","사당","낙성대","서울대입구","봉천","신림","신대방","구로디지털단지","대림","신도림","문래","영등포구청","당산","합정","홍대입구","신촌","이대","아현","충정로"] + + let subway3 :Set = ["지축","구파발","연신내","불광","녹번","홍제","무악재","독립문","경복궁","안국","종로3가","을지로3가","충무로","동대입구","약수","금호","옥수","압구정","신사","잠원","고속터미널","교대","남부터미널","양재","매봉","도곡","대치","학여울","대청","일원","수서","가락시장","경찰병원","오금"] + + let transfer = subway2.intersection(subway3) + let notTransfer = subway2.symmetricDifference(subway3) + + */ + +//★ 2강 - 7 control flow +/* + //if문. 조건에 따른 분기문. 만족시킨다고 하면, 바로 뒤에 있는 애가 시행되고 만족시키지 못하는 경우에는 else가 실행됨. + + let subway2 :Set = ["시청","을지로입구","을지로3가","을지로4가","동대문역사문화공원","신당","상왕십리","한양대","뚝섬","성수","건대입구","구의","강변","잠실나루","잠실","신천","종합운동장","삼성","선릉","역삼","강남","교대","서초","방배","사당","낙성대","서울대입구","봉천","신림","신대방","구로디지털단지","대림","신도림","문래","영등포구청","당산","합정","홍대입구","신촌","이대","아현","충정로"] + + let subway3 :Set = ["지축","구파발","연신내","불광","녹번","홍제","무악재","독립문","경복궁","안국","종로3가","을지로3가","충무로","동대입구","약수","금호","옥수","압구정","신사","잠원","고속터미널","교대","남부터미널","양재","매봉","도곡","대치","학여울","대청","일원","수서","가락시장","경찰병원","오금"] + + let transfer = subway2.intersection(subway3) + let notTransfer = subway2.symmetricDifference(subway3) + + if transfer.count > 0 { + print("환승역은 \(transfer) 입니다.") + + } else { + print("환승역은 없습니다. ") + + } + + for station in subway2 { + print("이번 역은 \(station)입니다. ") + } + + // key와 value의 값을 for문을 통해서 돌리는 것이 가능하다 + + var roomCapacity: [String: Int] = ["Bansky": 4, "Rivera": 8, "Kahlo": 4 , "Picasso": 10, "Cezanne": 20, "Matisse": 30 ] + //roomCapacity += ["Renoir"] // dictionary에서는 어레이의 문법으로 더하는 이런걸 못합니다. + roomCapacity["Renoir"] = 40 + + + for (roomName, capacity) in roomCapacity { + var roomDescription:String + switch capacity { + case 4: + roomDescription = "\(roomName)은 스터디 룸이며 정원은 \(capacity)명입니다." + + case 5...10: + "\(roomName)은 팀 세미나 룸이며 정원은 \(capacity)명입니다." + case 11...30: + "\(roomName)은 그룹 세미나 룸이며 정원은 \(capacity)명입니다." + case _ where capacity > 30: + "\(roomName)의 정원은 \(capacity)명이며 별도의 사용신청이 필요합니다." + default: + "\(roomName)의 정보를 다시 확인해주세요" + + } + } + */ + +//★2강 - 8.1 /8.2 optional + +/*// nil. 값이 없음을 나타내는 것으로, 모든 타입에서 사용이 가능하다고 한다. + // 그러나 이들은 프로그램을 크래쉬나게 할 가능성이 높기 때문에 실행중 nil이 될 수 있는 변수에 ?을 붙여 특별히 관리하자는 것. + + //var title: String = nil // 이건 옵셔널이 아니기때문에 에러가 난다. + //var title: String? = nil + //title = "Storyboard Prototyping" + + var title: String = "Storyboard Prototyping" + var ratings:[Int]? = nil + var supportURL: String? = nil + + //print("\(title) has \(ratings.count) ratings. \r\nsupport web page : \(supportURL ?? "Hello")") // ratings가 nil값이기 때문에 치명적인 에러를 반드시 야기하게 된다. + + + supportURL = "www.codershigh.com" + + // force unwrapping. 값의 존재를 확신할때 사용하는 친구. 느낌표로 접근하는 존재는 정말 확실하게 믿을때 사용해야한다. + var bookDescription = "\(title)" + if ratings != nil { + bookDescription += "\(ratings?.count)" + } + if supportURL != nil { + bookDescription += "\r\(supportURL!)" + } + + bookDescription + */ + +//★2강 - 8.3 optional + +// if let +/*var title: String = "Storyboard Prototyping" + var ratings:[Int]? = nil + var supportURL: String? = nil + + supportURL = "www.codershigh.com" + + var bookDescription = "\(title)" + if let theRatings = ratings { + bookDescription += "\(theRatings.count)" + } + if let theURL = supportURL { + bookDescription += "\r\(theURL)" + } + + bookDescription*/ + +//implicitly unwrapped optional. 이게 초기값은 어쩔 수 없이 nil이지만 애플리케이션이 동작하는 경우에는 반드시 값이 있을 때 사용하는 것. 처음 선언할때 !를 하는 것. +/* + var title: String = "Storyboard Prototyping" + var ratings:[Int]? = nil + var supportURL:String! = nil + + supportURL = "www.codershigh.com" + + var bookDescription = "\(title)" + if let theRatings = ratings { + bookDescription += "\(theRatings.count)" + } + //if let theURL = supportURL { + // + //} + + //bookDescription += "\r\(supportURL)" + //bookDescription + + // 위처럼 할 경우 supportURL의 경우에는 암시적으로 unwrapping된 옵셔널이기 때문에, 만약 출력시 optional은 그대로 남게된다.(차이점은 암시적으로 언래핑된 경우, 크래쉬는 일어나지 않는다는 점이다. 그래서 여기서 선택할 수 있는 것은 다음의 경우 하나 뿐이다. + + bookDescription += "\r\(supportURL!)" + bookDescription + */ + +//★ 2강 - 9 function +/* + //함수의 경우에는 매개변수(parameter뒤에 오는 친구)가 들어가고, return type이 나오는 형태 + var title: String = "Storyboard Prototyping" + var ratings:[Double]? = nil + var supportURL:String! = nil + + supportURL = "www.codershigh.com" + ratings = [4.5, 3.0, 5.0, 2.5] + + func ratingRecord (history:[Double]) -> (average:Double, min: Double, max:Double) { + var sum = 0.0, min = history[0], max = history[0] + for value in history{ + if min > value { + min = value + } + if max < value { + max = value + } + sum += value + } + let average = sum / Double(history.count) + return (average, min, max) + } + + + var bookDescription = "\(title)" + if let theRatings = ratings { + let record = ratingRecord(history: theRatings) + bookDescription += " has \(theRatings.count) ratings, \r\n average is \(record.average), from\(record.min) to \(record.max)" + } + //if let theURL = supportURL { + // + //} + + //bookDescription += "\r\(supportURL)" + //bookDescription + + // 위처럼 할 경우 supportURL의 경우에는 암시적으로 unwrapping된 옵셔널이기 때문에, 만약 출력시 optional은 그대로 남게된다.(차이점은 암시적으로 언래핑된 경우, 크래쉬는 일어나지 않는다는 점이다. 그래서 여기서 선택할 수 있는 것은 다음의 경우 하나 뿐이다. + + bookDescription += "\r\(supportURL!)" + bookDescription + + func myFunction () { + + } + + myFunction() + */ + +//★2강 - 10 structure +/* + //struct Task { + // var title:String? + // var time:Int? + //} + + //var callTask = Task(title: "call To Randy", time: 10*60) + //var reportTask = Task() + //reportTask.title = "Report to Boss" + + //var todayTask:[Task] = [ ] + //todayTask += [reportTask, callTask] + + struct Task { + var title:String + var time:Int? + } + + var callTask = Task(title: "call To Randy", time: 10*60) + var reportTask = Task(title: "Report to Boss", time: nil) + + + var todayTask:[Task] = [ ] + todayTask += [reportTask, callTask] + + print("today task = \(todayTask)") + todayTask[1].time = 15*60 + + callTask.title = "Call to Toby" + + print("today taks = \(todayTask), callTask = \(callTask)") + //struct의 경우에는 값을 복사하기 때문에 값이 변경되지 않는다. + */ + +//★ 2강 - 11 class + +// object를 생성하는 친구가 class. 구조체로 만드는 것은 보통 오브젝트라고 하지 않음. 스위프트에서는 그러나 모두를 통칭하는 인스턴스라는 말을 더 많이 씀. 오브젝트의 제일 큰 특징은 참조된다는 사실이다. 단순히 복사되지 않고, 그 주소값만 복사된다는 이야기다. + +/*struct Task { + var title:String + var time:Int? + var owner:Employee + var participant:Employee? + } + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + } + + let me:Employee = Employee() + //me의 경우에는 let임에도 불구하고, 클래스의 값들이 var이기 때문에 수정이 가능한 것이다. + me.name = "Alex" + me.phoneNumber = "010-1234-5678" + let toby:Employee = Employee() + toby.phoneNumber = "011-5678-1234" + var callTask = Task(title: "call To Randy", time: 10*60, owner: me, participant: toby ) + var reportTask = Task(title: "Report to Boss", time: nil, owner: me, participant: nil) + + callTask.participant?.phoneNumber = "010-5678-1234" + print("\(toby.phoneNumber)") + // 토비의 phoneNumber가 바뀐 것을 확인할 수 있다. + + var todayTask:[Task] = [ ] + todayTask += [reportTask, callTask] + + print("today task = \(todayTask)") + todayTask[1].time = 15*60 + + callTask.title = "Call to Toby" + + print("today taks = \(todayTask), callTask = \(callTask)")*/ + +// ★2강 - 12 enum +/* + //연관성 있는 값들의 그룹을 만들어 type-safe하게 만들자는 것이다. + // raw value를 줄 필요가 없다. + //1st-class type: 어디에나 사용가능. 매개변수나 리턴타입이나 컬렉션도 가능 + + + + struct Task { + var title:String + var time:Int? + var owner:Employee + var participant:Employee? + var type:TaskType + + enum TaskType { + case Call + case Report + case Meet + case Support + + //computed property를 사용할 수 있다! + var typeTitle:String{ + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Meet: + titleString = "Meet" + case .Report: + titleString = "Report" + case .Support: + titleString = "Support" + + + } + return titleString + //이제 enum값을 설정하고, tasktype의 값에 따라서 값을 리턴할 것이다. + } + } + } + } + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + } + + let me:Employee = Employee() + //me의 경우에는 let임에도 불구하고, 클래스의 값들이 var이기 때문에 수정이 가능한 것이다. + me.name = "Alex" + me.phoneNumber = "010-1234-5678" + let toby:Employee = Employee() + toby.phoneNumber = "011-5678-1234" + var callTask = Task(title: "call To Randy", time: 10*60, owner: me, participant: toby, type:.Call ) + var reportTask = Task(title: "Report to Boss", time: nil, owner: me, participant: nil, type: Task.TaskType.Report// full name으로 선언할 경우에는 이런 식으로 선언해주어야 한다.) + + callTask.participant?.phoneNumber = "010-5678-1234" + print("\(toby.phoneNumber)") + // 토비의 phoneNumber가 바뀐 것을 확인할 수 있다. + + var todayTask:[Task] = [ ] + todayTask += [reportTask, callTask] + + print("today task = \(todayTask)") + todayTask[1].time = 15*60 + + callTask.title = "Call to Toby" + + print("today taks = \(todayTask), callTask = \(callTask)") + */ + +//★ 2강 - 13 initializer + +/* + // 초기화 작업. stored property의 최초 값을 설정하는 작업을 의미한다. stored property는 일정 영역을 차지하는 프라퍼티. 반대 개념이 computed property. + + struct Task { + var title:String + var time:Int? // 이것들은 stored property. 보다시피 값이 없는데, 이들이 만들어질때 값을 주는 것을 초기화작업이라고 한다! + var owner:Employee + var participant:Employee? + var type:TaskType + + enum TaskType { + case Call + case Report + case Meet + case Support + + //computed property를 사용할 수 있다! + var typeTitle:String{ // 이 typetitle이 computed property + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Meet: + titleString = "Meet" + case .Report: + titleString = "Report" + case .Support: + titleString = "Support" + + + } + return titleString + //이제 enum값을 설정하고, tasktype의 값에 따라서 값을 리턴할 것이다. + } + } + } + init(type:TaskType, owner:Employee) { + self.type = type + self.title = type.typeTitle + self.owner = owner + self.participant = nil + self.time = nil + } + } + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + + init(name:String) { + self.name = name + } + convenience init(name:String, phone:String) { + self.init(name:name) + self.phoneNumber = phone + } // init이 앞에 선언되어 있고, 이것을 다시 불렀기 때문에 convenienc init이 됨 + } + + let me:Employee = Employee(name: "Alex", phone: "010-1234-5678") + //me의 경우에는 let임에도 불구하고, 클래스의 값들이 var이기 때문에 수정이 가능한 것이다. + //me.name = "Alex" + //me.phoneNumber = "010-1234-5678" + let toby:Employee = Employee(name: "Toby", phone: "010-5678-1234") + //toby.phoneNumber = "011-5678-1234" + var callTask = Task(type: .Call, owner: me) + var reportTask = Task(type: .Report, owner: me) + + + //var callTask = Task(title: "call To Randy", time: 10*60, owner: me, participant: toby, type:.Call ) + //var reportTask = Task(title: "Report to Boss", time: nil, owner: me, participant: nil, type: Task.TaskType.Report) // full name으로 선언할 경우에는 이런 식으로 선언해주어야 한다.) + + callTask.participant?.phoneNumber = "010-5678-1234" + print("\(toby.phoneNumber)") + // 토비의 phoneNumber가 바뀐 것을 확인할 수 있다. + + var todayTask:[Task] = [ ] + todayTask += [reportTask, callTask] + + print("today task = \(todayTask)") + todayTask[1].time = 15*60 + + callTask.title = "Call to Toby" + + print("today taks = \(todayTask), callTask = \(callTask)") + */ + +//★ 2장 - 14 method + +// method: 타입에 종속된 함수. 클래스, 스트럭쳐, 이넘이 모두 인스턴스 메소드를 가리킬 수 있으며 self는 그 자신을 가리킨다. +struct Task { + var title:String + var time:Int? // 이것들은 stored property. 보다시피 값이 없는데, 이들이 만들어질때 값을 주는 것을 초기화작업이라고 한다! + var owner:Employee + //var participant:Employee? + var type:TaskType + + enum TaskType { + case Call(number:String) + case Report(to:Employee, when:String) + case Meet(to:Employee, location:String) + case Support(who:Employee, duration:Int) + + //computed property를 사용할 수 있다! + var typeTitle:String{ // 이 typetitle이 computed property + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Meet: + titleString = "Meet" + case .Report: + titleString = "Report" + case .Support: + titleString = "Support" + + + } + return titleString + //이제 enum값을 설정하고, tasktype의 값에 따라서 값을 리턴할 것이다. + } + } + } + init(type:TaskType, owner:Employee) { + self.type = type + self.title = type.typeTitle + self.owner = owner + //self.participant = nil + self.time = nil + } + func dobasicTask() -> String { + let taskDescription:String + switch type { + case .Call(let number): + taskDescription = "\(owner.name) make a call to \(number)" + case .Report(let receiver, let time): + taskDescription = "\(owner.name) report to \(receiver.name) at \(time)" + case .Meet(let participant, let location): + taskDescription = "\(owner.name) meet \(participant.name) at \(location)" + case .Support(let taskOwner, let duration): + taskDescription = "\(owner.name) support \(taskOwner.name) at \(duration) days" + default: + taskDescription = "Need more information for Task" + + } + return taskDescription + } +} + +class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + + init(name:String) { + self.name = name + } + convenience init(name:String, phone:String) { + self.init(name:name) + self.phoneNumber = phone + } // init이 앞에 선언되어 있고, 이것을 다시 불렀기 때문에 convenienc init이 됨 + func report() { + if let myboss = boss { + print ("\(name) reported to \(myboss.name)") + } else { + print("\(name) don't have boss") + } + } + func callTaskToBoss() -> Task? { + if let myBoss = boss, let callTo = myBoss.phoneNumber { + var callTask = Task(type: .Call(number: callTo), owner: self) + return callTask + } + return nil + } + +} + + +let me:Employee = Employee(name: "Alex", phone: "010-1234-5678") +//me의 경우에는 let임에도 불구하고, 클래스의 값들이 var이기 때문에 수정이 가능한 것이다. +//me.name = "Alex" +//me.phoneNumber = "010-1234-5678" +let toby:Employee = Employee(name: "Toby", phone: "010-5678-1234") +//toby.phoneNumber = "011-5678-1234" +me.boss = toby +me.report() + +var todayTask:[Task] = [ ] + +var reportTask = Task(type: .Report(to:toby, when:"afternoon"), owner: me) +todayTask += [reportTask] +if let callTask = me.callTaskToBoss() { + todayTask += [callTask] +} + + + + +//var callTask = Task(title: "call To Randy", time: 10*60, owner: me, participant: toby, type:.Call ) +//var reportTask = Task(title: "Report to Boss", time: nil, owner: me, participant: nil, type: Task.TaskType.Report) // full name으로 선언할 경우에는 이런 식으로 선언해주어야 한다.) + + +print("\(toby.phoneNumber)") +// 토비의 phoneNumber가 바뀐 것을 확인할 수 있다. + + + +print("today task = \(todayTask)") +todayTask[1].time = 15*60 + +reportTask.dobasicTask() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/session2_seokminchang.playground/contents.xcplayground b/session2_seokminchang.playground/contents.xcplayground new file mode 100644 index 0000000..5da2641 --- /dev/null +++ b/session2_seokminchang.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/session2_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata b/session2_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/session2_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/swiftFunctionType_seokminchang.playground/Contents.swift b/swiftFunctionType_seokminchang.playground/Contents.swift new file mode 100644 index 0000000..65b02fe --- /dev/null +++ b/swiftFunctionType_seokminchang.playground/Contents.swift @@ -0,0 +1,288 @@ +//: Playground - noun: a place where people can play + +import UIKit + +var str = "Hello, playground" + +//★ 5강 - 1 function type의 개념 + +// 함수의 경우에는 1st class citizen이라고 본다. 함수가 1등 시민인지에 대해서 효용을 의심하는 경우도 있지만, 나중되면 복잡한 문제를 해결하는데 이것이 더 효율적이라는 것을 깨닫게 될 것임 ㅇㅇ +//★ 5강 -2 funtion type 설정 +/* +func addVAT(source:Double) -> Double { + return source * 1.1 +} + +func couponDiscount(source:Double) -> Double { + return source * 0.9 +} + +var additional:(Double) -> Double + +let transaction032701 = 120.7 +additional = addVAT + +let price032701 = additional(transaction032701) + +func finalPrice(source:Double, additional:(Double) -> Double) -> Double { + + let price = additional(source) + return price +} + +let price032702 = finalPrice(source: 350.0, additional: couponDiscount) +*/ + +//★ 5강 - 3 closure 소개 + +//클로저의 정의. 1등시민으로 사용가능한 독립적인 코드조각. 리턴타입, 매개변수, 할당 모두가 가능한 것이다. 클로저의 특성 중 한가지는 자신의 ㅌㅡㄱ성 값을 받은 후에 그냥 닫히는 것. +/* +let addVATClosure = { (source:Double) -> Double in + return source*1.1 +} +let couponDiscountClosure = {(source:Double) -> Double in + return source * 0.9 +} + +let price032703 = addVATClosure(157.6) + */ + +//★ 5강 - 4 closure 축약하기 + +/* +let addVATClosure = { (source:Double) -> Double in + return source*1.1 +} +let addVATClosure2 = { source in //type은 추론이 가능하기 때문에 생략하는 것이 가능하다. + return source*1.1 +} +let addVATClosure3 = { source in + source*1.1 // 어차피 리턴할거니까 리턴도 생략이 가능하다. +} +let addVATClosure4 = { $0 * 1.1 //매개변수 어차피 들어올 거 아니까, 위치를 통해서 접근하는 것이다. 0번째 오는 매개변수에 *1.1을 해서 리턴한다는 것으로 바꾸는 것. +} + +let couponDiscountClosure = {(source:Double) -> Double in + return source * 0.9 +} +let couponDiscountClosure2 = {source in //마찬가지로 타입은 추론이 가능하기 때문에 생략해주고 + return source * 0.9 +} +let couponDiscountClosure3 = {source in + source * 0.9 // 어차피 리턴해줄거 다 아니까 이것도 생략 가능하고 +} +let couponDiscountClosure4 = {$0 * 0.9 //매개변수 들어오는거 어차피 다 아니까, 그냥 몇번째 매개변수랑 곱해주면 되는지만 정의해준다. +} + + +let price032703 = addVATClosure(157.6) +let price032704 = couponDiscountClosure4(200.0) +*/ + +//★ 5강 - 5 함수를 리턴하는 함수(Currying) // 함수를 매개변수로 받는 함수(고차함수)보다 활용도가 떨어지긴 함. 조금 어려움 +/* +let addVATClosure = { (source:Double) -> Double in + return source*1.1 +} +let addVATClosure2 = { source in //type은 추론이 가능하기 때문에 생략하는 것이 가능하다. + return source*1.1 +} +let addVATClosure3 = { source in + source*1.1 // 어차피 리턴할거니까 리턴도 생략이 가능하다. +} +let addVATClosure4 = { $0 * 1.1 //매개변수 어차피 들어올 거 아니까, 위치를 통해서 접근하는 것이다. 0번째 오는 매개변수에 *1.1을 해서 리턴한다는 것으로 바꾸는 것. +} + +let couponDiscountClosure = {(source:Double) -> Double in + return source * 0.9 +} +let couponDiscountClosure2 = {source in //마찬가지로 타입은 추론이 가능하기 때문에 생략해주고 + return source * 0.9 +} +let couponDiscountClosure3 = {source in + source * 0.9 // 어차피 리턴해줄거 다 아니까 이것도 생략 가능하고 +} +let couponDiscountClosure4 = {$0 * 0.9 //매개변수 들어오는거 어차피 다 아니까, 그냥 몇번째 매개변수랑 곱해주면 되는지만 정의해준다. +} + + +let price032703 = addVATClosure(157.6) +let price032704 = couponDiscountClosure4(200.0) + +func makeAdder(x:Int) -> (Int) -> Int { + func adder(a:Int) -> Int { + return x + a + } + return adder +} + +func makeAdder2(x:Int) -> (Int) -> Int { + let adder:(Int) -> Int = { + return $0 + x + } + return adder +} + +func makeAdder3(x:Int) -> (Int) -> Int { + return { + return $0 + x + } + +} + + + +let add5 = makeAdder2(x: 5) +let add10 = makeAdder(x: 10) + +print(add5(2)) +print(add10(2)) +print(makeAdder3(x: 5)(2)) +*/ + +//★ 5강 - 6 map 함수 + +//map 함수를 통해서 반복문을 대체해본다. + + +let addVATClosure = { (source:Double) -> Double in + return source*1.1 +} +let addVATClosure2 = { source in //type은 추론이 가능하기 때문에 생략하는 것이 가능하다. + return source*1.1 +} +let addVATClosure3 = { source in + source*1.1 // 어차피 리턴할거니까 리턴도 생략이 가능하다. +} +let addVATClosure4 = { $0 * 1.1 //매개변수 어차피 들어올 거 아니까, 위치를 통해서 접근하는 것이다. 0번째 오는 매개변수에 *1.1을 해서 리턴한다는 것으로 바꾸는 것. +} + +let couponDiscountClosure = {(source:Double) -> Double in + return source * 0.9 +} +let couponDiscountClosure2 = {source in //마찬가지로 타입은 추론이 가능하기 때문에 생략해주고 + return source * 0.9 +} +let couponDiscountClosure3 = {source in + source * 0.9 // 어차피 리턴해줄거 다 아니까 이것도 생략 가능하고 +} +let couponDiscountClosure4 = {$0 * 0.9 //매개변수 들어오는거 어차피 다 아니까, 그냥 몇번째 매개변수랑 곱해주면 되는지만 정의해준다. +} + + +let price032703 = addVATClosure(157.6) +let price032704 = couponDiscountClosure4(200.0) + +func makeAdder(x:Int) -> (Int) -> Int { + func adder(a:Int) -> Int { + return x + a + } + return adder +} + +func makeAdder2(x:Int) -> (Int) -> Int { + let adder:(Int) -> Int = { + return $0 + x + } + return adder +} + +func makeAdder3(x:Int) -> (Int) -> Int { + return { + return $0 + x + } + +} + + + +let add5 = makeAdder2(x: 5) +let add10 = makeAdder(x: 10) + +print(add5(2)) +print(add10(2)) +print(makeAdder3(x: 5)(2)) + +//새강의 스타트 포인트 +let transactions = [560.0, 321.5, 190.0, 672.8, 1190.0, 450.0] +var vatPrices:[Double] = [] + +for transaction in transactions { + vatPrices += [addVATClosure(transaction)] + +} + +let vatMapPrices = transactions.map({transaction -> Double in + return transaction * 1.1 +}) + +let vatMapPrices2 = transactions.map({$0 * 1.1}) + +//★ filter 함수 +//조건이 있는 함수를 각각의 요소에 적용해서, 새로운 배열을 만들어내는 함수다. + +var BigTransactions:[Double] = [] + +for price in vatPrices { + if price >= 500{ + BigTransactions += [price] + } +} + +let bigFilterTransactions = vatPrices.filter({$0 >= 500}) + +var meetingRooms:[String:Int] = ["Bansky":4, "Rivera":8, "Kahlo":8, "Picasso":10, "Cezanne":20, "Matisse":30] + +let members = 9 +let available = meetingRooms.filter({$0.1 > members}) +print(available) // 형태가 바뀜. 튜플이 아니더라도 이제 나올 수 있게 되었다. + +//★ sort 함수 + +func ascendantSort (sort1:Double, sort2:Double) -> Bool { + return sort1 > sort2 +} + +let sortedPrices = vatPrices.sorted(by: ascendantSort) + +let sortedPrices2 = vatPrices.sorted(by: {sort1, sort2 in + return sort1 > sort2}) +let sortedPrices3 = vatPrices.sorted(by: {$0 > $1}) + +//sort는 여기서 한번 더 줄일 수 있다. +let sortedPrices4 = vatPrices.sorted(by: >) + +let sortedMeetingRooms = meetingRooms.sorted(by: {$0.1 > $1.1}) +print(sortedMeetingRooms) + +//★ reduce +//reduce함수는 하나의 값으로 수렴시키는 함수이다. + +func priceSum (base:Double, adder:Double) -> Double { + return base + adder +} + +var sum:Double = 0.0 +for price in vatPrices{ + sum += priceSum(base: sum, adder: price) +} + +var sum2:Double = 0.0 +let sumReduce = vatPrices.reduce(sum2, priceSum) +let sumReduce2 = vatPrices.reduce(0.0, {base, adder in return base + adder}) +let sumReduce3 = vatPrices.reduce(0.0, +) +//combine 할 오퍼레이터만 넘겨주면, 이렇게 만들어줌 ㅇㅇ +let pricesInString = vatPrices.reduce("", {"\($0)" + "\($1)\n"}) +//클로저 기호를 계속 까먹는 실수를 하는 경향이 있음 + +let descriptionString = meetingRooms.reduce("we have meeting rooms: \n", {$0 + "\($1.0):\($1.1)"}) + + +print(descriptionString) + +let x = [10, 3, 20, 15, 4].sorted(by: {$0 < $1}).filter({ $0 > 5 }).map({ $0 * 100 }) + +let x2 = [10, 3, 20, 15, 4].sort(by: {$0 < $1}) + + + diff --git a/swiftFunctionType_seokminchang.playground/contents.xcplayground b/swiftFunctionType_seokminchang.playground/contents.xcplayground new file mode 100644 index 0000000..5da2641 --- /dev/null +++ b/swiftFunctionType_seokminchang.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/swiftFunctionType_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata b/swiftFunctionType_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/swiftFunctionType_seokminchang.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/swiftFunctionType_seokminchang.playground/timeline.xctimeline b/swiftFunctionType_seokminchang.playground/timeline.xctimeline new file mode 100644 index 0000000..9fd8c2a --- /dev/null +++ b/swiftFunctionType_seokminchang.playground/timeline.xctimeline @@ -0,0 +1,11 @@ + + + + + + + From edbb20fc98462b7029460ec0fb6b1d39de278ee1 Mon Sep 17 00:00:00 2001 From: smc219 <31872014+smc219@users.noreply.github.com> Date: Mon, 6 Nov 2017 23:29:47 +0900 Subject: [PATCH 2/2] barebasic and helloiphone --- .../HelloiPhone/Base.lproj/Main.storyboard | 2 +- HelloiPhone_seokminchang.zip | Bin 0 -> 30517 bytes bareBasic_seokminchang.zip | Bin 0 -> 23078 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 HelloiPhone_seokminchang.zip create mode 100644 bareBasic_seokminchang.zip diff --git a/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard b/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard index a4e7cc5..1382f41 100644 --- a/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard +++ b/Chapter1/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard @@ -21,7 +21,7 @@ -

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