목록Swift/Swift 기초문법 (75)
HIT해
Swift에서 클로저란 무엇인가?클로저(Closure)는 코드에서 일급 시민(First-class Citizen)으로 취급되는 독립적인 코드 블록이다.클로저는 특정한 기능을 수행하는 코드를 캡슐화하여 변수나 상수에 저장하거나, 다른 함수에 인자로 전달할 수 있습니다.Swift의 클로저는 다른 언어에서의 람다(lambda)나 익명 함수(anonymous function)와 유사합니다. 정리하자면 클로저 자체는 그냥 메소드를 실행하는 것인데 함수와 다르게 클로저로 선언한 이름을 그대로 사용하면 된다. 기본적인 문법은 아래와 같다!{ (매개변수들) -> 반환형 in 실행할 코드} 사용하는 예시를 보자let add: (Int, Int) -> Int = { (a: Int, b: Int) -> Int in ..
플러터에서 많이 사용해본 제네릭이다! 재사용가능한 코드를 만들때 자주 사용되는 형식이다. 예를들어 id를 포함하고 있는 모델들에 적용하기위한 함수라던가.. 그런데 Swift의 제네릭은 조금 다른 것이 T로 선언하지 않아도 된다는 것이었다.(그렇지만 T로 쓰는게 왜인지 마음이 편하다..) 코드를 살펴보자import UIKitstruct myArray{ // 제네릭을 담는 빈 배열 var elements : [T] = [T]() init(_ elements : [T]){ self.elements = elements }}struct Freiend { var name : String}let friend_01 = Freiend(name: "민혁")let fri..
매개변수를 받는 함수를 호출할 때 매개변수를 꼭 담아주어야한다. ( 옵셔널이 아닌이상 ) 매개변수 함수 호출 방식 세가지를 알아보자! 첫번째 일반적인 사용 방법이다.// 일반적인 함수 선언func myFunction(name : String) -> Int{ var count : Int = name.count return count}print(myFunction(name: "탕후루"))선언해둔 name 과 값을 넣어 호출해주는 방식이다. 두번째는 선언한 매개변수 명이 아닌 다른 명으로 호출하는 방식이다.// 다른 이름으로 매개변수를 사용하고 싶을때!func myFunctionSecond(tmp name : String) -> Int{ var count : Int = name.count ..
프로퍼티옵저버란? 값의 변경을 옵절빙(감시하는) 녀석이다. 아래는 사용하는 방식이다. import UIKitvar myAge = 26 { willSet{ print("값이 변경되기 전 :", myAge) } didSet{ print("값이 변경된 후 :", myAge) }}myAge = 27 실행결과 값의 변경을 체크하며 디버깅해야할때 유용할 것 같다.
클래스와 구조체는 여러 정보를 담고 있는 모델을 만들어낼때 사용한다. 두가지는 비슷하지만 저장되고 이용되는 방식에 차이가 있다. 우선 구조체를 살펴보자.struct AboutFriendStruct { var name : String var age : Int}var woojin = AboutFriendStruct(name: "peperoni", age: 27)var woojinclone = woojinprint("before clone.name \(woojinclone.name)")woojinclone.name = "천우진"print("after clone.name \(woojinclone.name)")print("before original.name \(woojin.name)")woojincl..
옵셔널이란?값이 있는지 없는지 모르는 상태를 의미한다! 언래핑이란?감싸져 있는 것을 벗기는 것 언래핑을 하는 방법과 왜 하는지 코드와 결과로 확인해보자!import UIKitvar someVariable : Int? = nilif someVariable == nil { someVariable = 5}if let otherVariable = someVariable { print("언래핑 되었다. 즉 값이 있다.") print(otherVariable)}else{ print("값이 없다.")}print(someVariable) if let 의 과정이 언래핑이다! 결과화면 옵셔널로 선언되어 있는 변수를 그대로 사용하면 Optional로 감싸져있는 것을 print 구문으로 볼 수 있다! 다..
import UIKit// 0...5// 0,1,2,3,4,5// 0.. 이전 foreach문 처럼 뒤에 조건을 걸 수도 있다! for i in 0.. 결과화면 i를 요소들의 매개변수로 사용했지만 해당하는 값 없이 사용하고 싶을때는 언더바를 사용하면 된다! import UIKit// 크기가 설정되지 않는 배열 생성var randomInt: [Int] = [Int]()for _ in 0...24 { let randomNum = Int.random(in: 0...100) randomInt.append(randomNum)}for num in randomInt { print(num)} 결과화면
import UIKitenum Animal {// case dog// case cat// case bird case dog, cat, bird}// 값이 변경되지 않는 상수let pet = Animal.birdprint("My pet is",pet) print로 출력할 변수가 하나라면 위의 방법처럼 만들어도 된다! 결과화면 값을 가지고 있는 enum 사용하기! import UIKitenum Number : Int { case first = 1 case second = 2}print("첫번쨰 출력",Number.first)print("두번째 출력",Number.second.rawValue) 이때 enum타입의 값을 지정해주지 않으면 rawvalue ( Int값들 )를 가질 ..