소피it블로그

[Swift] 100 Days of Swift - Day 6 정리 본문

개발_iOS/스위프트

[Swift] 100 Days of Swift - Day 6 정리

sophie_l 2022. 3. 27. 12:42

https://www.hackingwithswift.com/100/6

 

Day 6 – 100 Days of Swift

Follow the 100 Days of Swift and learn to build apps for free.

www.hackingwithswift.com

day 6인 기념으로 데이식스의 노래를 추천하는 타임을 가져보자.

그때그때 선호가 바뀌기는 하지만 내가 꾸준히 좋아하는 노래들은 how to love, 버릇이 됐어, 장난 아닌데, sing me 정도이다. 콩그레츌레이션, 예뻤어는 너무 유명해서 뺐다. ++ 추가로 chocolate, 어쩌다 보니 얘네도 꼭 들어야한다 흑흑

물론 데이식스 노래는 웬만하면 다 좋기는 하다. 오프에서 몇 번 본 적이 있긴 한데 별개로 콘서트 한 번쯤은 가볼 걸 그랬다는 생각. 다들 전역하면 언젠가는?

 

https://youtu.be/ZmHQbzbM8pI

원필씨가 잘생겼다🥰

제이의 음색을 좋아했었는데 안타깝다.

 

++ 그리고 이건 요즘 내 1일 1영상...

https://youtu.be/_78CYlWmigI

도운이가 저렇게 귀여운줄 몰랐다... 알았으면 2017년에 덕질했을텐데.... 흑흑

하여튼 주접은 여기까지 떨고 이젠 공부를 시작해보자


⭐️ 1. 클로저: 스위프트는 함수를 다른 자료형과 동일하게 사용할 수 있도록 해준다. 즉, 함수를 변수에 할당하거나 다른 함수에 인수로써 전달할 수도 있다는 것인데, 이런 경우의 함수를 closure라고 부른다.

let eating = {
	print("I'm eating now")
}

eating()

// func eating = { } 이나 let eating() { } 형식으로 쓰지 않도록 주의할 것

⭐️ 2. 클로저에는 파라미터를 받아들이는 name이나 공간이 없다. 대신 클로저 시작하는 중괄호 이후에 소괄호를 넣고 그 안에 써준다.

let eating = { (food: String) in
	print("I'm eating \(food) now.")
}

eating("icecream")

// 주의할 점은, 뒤에 in을 꼭 써줘야 한다는 것과 호출시 파라미터 레이블을 언급하지 않아야 한다는 것.

3. 리턴값이 있는 경우: in 앞에 화살표와 리턴 값의 타입을 적어주면 된다.

let eatingWithReturn = { (food: String) -> String in
	return "I'm eating \(food) now."
}

let message = eatingWithReturn("icecream")

⭐️ 4. 클로저를 함수의 인수로 받아줄 경우

let eating = {
	print("I'm eating now")
}

// * () -> Void 형태의 클로저

func morning(action: () -> Void) {
	print("It is morning. I have to get ready.")
	action()
	print("I'm ready now.")
}

morning(action: eating)

// 이렇게 호출하면 됨

⭐️ 5. trailing closure syntax: 함수의 마지막 파라미터가 클로저일 때는 클로저를 인수로 주는 대신 함수의 { } 안에 바로 써줄 수 있음

func morning(action: () -> Void) {
	print("It is morning. I have to get ready.")
	action()
	print("I'm ready now.")
}

morning() {
	print("I'm eating now.")
}

morning {
	print("I'm eating now")
}

// 파라미터가 액션 하나밖에 없기 때문에 () 생략 가능