🍏/Swift(39)
-
[Swift] 세트 / Set
Set Generic Structure An unordered collection of unique elements. @frozen struct Set where Element : Hashable let ingredients: Set = ["cocoa beans", "sugar", "cocoa butter", "salt"] if ingredients.contains("sugar") { print("No thanks, too sweet.") } // Prints "No thanks, too sweet." 기본 집합 연산 (Set) intersection()// 교집합(공통되는 아이템만 선택) symmetricDifference()// !교집합 (양쪽 집합중 한쪽에만 있는 애들의 합집합) union()// ..
2022.09.01 -
[Swift] 배열 / Array
Swift 배열 Generic Structure 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입 swift의 배열 정의 An ordered, random-access collection. @frozen struct Array 배열 선언 / 배열 초기화 # 타입 추론을 통한 선언 및 초기화 // An array of 'Int' elements let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15] // An array of 'String' elements let streets = ["Albemarle", "Brandywine", "Chesapeake"] # 타입 명시를 통한 선언 // Shortened forms are preferred var emptyDou..
2022.09.01 -
[Swift] @autoclosure / 지연된 실행
@autoclosure 속성은 인자값으로 전달된 일반 구문이나 함수 등을 클로저로 래핑하는 역할. 이 속성이 붙어 있을 경우, 일반 구문을 인자값으로 넣더라도 컴파일러가 알아서 클로저로 만들어서 사용. var customersInLine = [String]() func addVars(fn: @autoclosure () -> Void) { customersInLine = Array(repeating: "", count: 3) customersInLine.append("HIHI") fn() } addVars(fn: customersInLine.insert("CHAN", at: 0)) // 지연된 실행과 autoclosure var customerProviders: [() -> String] = [] // 클..
2022.08.31 -
[Swift] @escaping Closure / escape 클로저
xCode: 13.4.1 Swift: 5.5 @escaping 속성은 인자값으로 전달된 클로저를 저장해 두었다가, 나중에 다른 곳에서도 실행 할 수 있도록 허용해주는 속성. @escaping 클로저에 non-escaping parameter 'fn' 할당이라는 에러가 납니다. 디버깅 > func outFunc() -> Void{ print("outFunc") } var a: () -> Void = outFunc func callback(fn: @escaping () -> Void) { let f = fn f() a = fn a() } a()// outFunc callback { print("closure")// closure / closure } a()// closure 스위프트에서 함수의 인자값으로 전..
2022.08.31 -
[Swift] 트레일링 클로저 / Trailing Closure
- 트레일링 클로저(Trailing Closure) 후행 클로저라고도 불림. // 원본 함수 value.sort(by: { (s1, s2) in return s1 > s2 }) == value.sort() { (s1, s2) in return s1 > s2 } == value.sort { (s1, s2) in return s1 > s2 } // 인자값이 한개라면 인자값을 넣어주기 위한 괄호 부분도 생략이 가능. // 인자값이 여러개라면, 무작정 괄호를 생략해서는 안됨. == func divide(base: Int, success s: () -> Void) -> Int { defer { s() } return 100 / base } print(divide(base: 10)){print("연산 성공")} /..
2022.08.26