본문 바로가기

교육/Swift

(30)
[swift] nil 체크 A ?? BA가 nil이 아닐경우 A반환nil일 경우 B반환 nil체크코드 쓰지 말고 이거 쓰자
[swift] 함수형 프로그래밍, 커링 기법 import Foundation /** func1 출력하는 함수 */ func func1() { print("func1") } /** func2 출력하는 함수 */ func func2() { print("func2") } /** func1,2 실행하는 함수 */ func excuteAll() { func1() func2() } /** 전달받은 함수들을 전부 실행하는 함수 함수형 프로그램 패러다임 안에서는 함수 역시 객체임으로 전달인자 또는 반환값으로 사용 가능 */ func excute(tasks:[()->Void]) { for task in tasks { task() } } excuteAll() excute(tasks: [func1,func2]) /** 두 수의 합을 구하는 함수 - parameter ..
[swift] 접근자 1. 접근자변수에 대한 접근 권한private : 현재 파일만internal : 같은 모듈 내의 모든 파일public : 모든 모듈의 모든 파일, 그냥 쓰면 워닝, class의 default는 internal 2. 샘플 코드import Foundationclass Car // default가 internal{ private var speed : Int = 0 // 현재 파일만 internal var color : Int = 0 // 같은 모듈 내의 모든 파일 public var engine : Int = 0 // 모든 모듈의 모든 파일, 워닝 나오는 이유는 class가 internal인데 해서 var data : Int = 0 // internal이 default}var c = Car()c.speed =..
[swift] selector 1. selectorswift에서 objc의 selector 쓰는 방법 기술 2. 샘플 코드// selectorclass Test //: NSObject{ @objc func foo(name : String) -> Int { print(name) return 0 }}// objc 셀렉터// SEL f = @selector("foo:")// swift//var f = #selector(Test.foo(aaa:))var f = #selector(Test.foo(_ :)) // objc 문법이라 objc 가져야함showType(f) var t = Test() //t.performSelector(f, withObject: "AA")
[swift] guard 1. guardguard : 방어코드 작성할때 씀 guard else 문 2. 샘플 코드// 예외를 던질 때 사용할 enum 상수// 아무것도 없지만 is ErrorType으로 검사할 수 있으니 좋은 구현?enum FileSendError : ErrorType{ case NoConnection case FileNotFound}func sendFile( a : Int) throws ->Bool // 예외 가능성이 있으면 throws를 명시{ // print("s") // return true // 리턴해버리면 defer 안불림 defer // throw발생해서 종료되었을 때 실행, 예외가 안나왔을때도 부름, 예외가 나와도 부름, 항상 처음에 있어야함 { print("이 코드는 이 함수가 종료되기 전에 항상..
[swift] exception 1. 예외try : 예외가 발생할 수 있는 함수 앞에 적음do : 예외 발생 구간을 묶는 함수catch : 해당 예외문이 나왔을 때 처리함throw : 예외 가능성이 있을 때 명시 2. 샘플 코드// 예외를 던질 때 사용할 enum 상수// 아무것도 없지만 is ErrorType으로 검사할 수 있으니 좋은 구현?enum FileSendError : ErrorType{ case NoConnection case FileNotFound}func sendFile( a : Int) throws ->Bool // 예외 가능성이 있으면 throws를 명시{ // print("s") // return true // 리턴해버리면 defer 안불림 defer // throw발생해서 종료되었을 때 실행, 예외가 안나왔을때도..
[swift] generic 1. generic c++의 템플릿 개념2가지 방식으로 존재c++ : 스위프트와 같은 방식, 함수 여러개 만들어야 한다. java : 객체 생성, 함수는 1개로 가능, 성능저하가 있다. 2. 샘플코드/* func swap(inout a : Int, inout _ b : Int ) { let temp = a a = b b = temp } */// 1. 기본 모양 (T하나만 있으면 같은 타입을 넘겨야함)func Swap(inout a : T, inout _ b : T ){ let temp = a a = b b = temp}var x = "st"var y = "gs"Swap(&x,&y) // 실제 주소를 보내는건 아니다. inout 방식이면 &를 붙인다. 20, 10으로 바뀜 print(x,y) // 2. G..
[swift] operator overloading 1. operator overloading연산자를 재 정의해서 새로운 동작을 만드는 것 2. 샘플 코드class Point : CustomStringConvertible{ var x : Int = 0 var y : Int = 0 var description: String { get{ // CustomStringConvertible에 정의 되어 있음 return "\(x), \(y)" } } init(_ a:Int = 0, _ b:Int = 0){x=a;y=b}}// 연산자 재정의 함수는 멤버가 아닌 일반 함수로만 가능// 연산자 이름이 함수 이름func +( p1:Point, p2:Point)->Point{ return Point(p1.x+p2.x,p1.y+p2.y)}var p1 = Point(1,2)v..