Swift - IOS 앱 개발

IOS 앱 개발 Set 과 Closure

YagSill 2021. 8. 19. 09:29
728x90

안녕하세요! Yagsill 입니다~!

 

오늘은 Set에 대한 개념과 Closure에 대한 내용을 배웠는데요.

 

Set은 배열이나 딕셔너리와 살짝 비슷한 것 같구요. Clousure는 이름없는 함수~ 라고 생각하시면 될 것 같아요!

 

바로한번 보겠습니다!

 

일단 오늘은 Windows 환경에서 online.swiftplayground를 이용해 코딩을 해 보았어요. 그러다 보니 콘솔에 띄우려면 print 함수를 이용해야 한다는 점이 있습니다.

 

어쨋든 출력결과를 한번 보겠습니다.

보시다 시피 두개의 결과가 나왔는데,

 

1) Array(배열) 을 그대로 출력한 것

2) Set(셋)을 그대로 출력한 것

 

-> 혹시 차이점이 보이시나요? 보시면 Array(배열)는 모든 값들을 중복 상관 없이 다 끌어와서 보여주죠? 하지만 Set을 보면 중복되는 값은 하나만 보여줍니다. 현재 Set의 배열 상태는 [1,2,3,1,4,0] 인데 출력결과는 [1,2,3,4,0] 이 나왔네요.

 

뭔가 Set, Array, Dictionary의 차이점들과 필요로 하는 방향에 따라서 골라서 사용할 수 있을 것 같습니다...!

 

두번째로는 Closure인데여!

 

이거는 솔직히 좀 이해하기 힘들었습니다.

 

첫번째로는 multiclosure라는 변수를 만들어서 파라메터를 정수형으로 두가지를 받아 값을 곱해 return 하는 변수를 만들었습니다.

 

두번째로는 함수를 만들었는데, operateTwo 라는 함수입니다. 이 함수 또한 a와 b를 정수형 Int로 받고, closure로 operatiion을 넣어 주었습니다. closure는 두가지의 파라메터를 받아서 Int형으로 전달해 그 값을 다시 전체적으로 계산한 후 정수형(Int)로 내보낸다는 뜻입니다.

솔직히 제가 무슨말 하는지 모르겠습니다. 하하.

어쨋든 정리를 해 보자면 = operateTwo는 총 세개의 파라메터를 가지고 있고, 두개는 a,b 하나는 closure 입니다.

operateTwo의 계산식을 보면 result라는 변수에 closure를 대입합니다.

그 값을 return 해주는 함수인데여. 어쨋든 operatoin에 a,b의 값을 받아야겠죠??

 

마지막 줄을 보면 operateTwo(a : 4, b : 3, operation : multiclosure) 입니다.

 

이거를 해석해 보면

operateTwo 함수를 호출함 -> 호출하기 위해서는 3개의 파라메터값을 넣어주어야 함 -> 세개 중 a,b의 값은 각각 4와 3 그리고 마지막 파라메터인 operation은 multiclosure를 넣어줌으로써 호출 조건 달성 완료 -> 여기서 a,b의 값은 operateTwo 함수의 파라메터 a,b로 들어가겠쬬? -> 그 후 함수 안의 result = operateion(a(4),b(3)) 이렇게 들어갑니다.

-> 그리고 operation : multiclosure이기 때문에 multiclosure의 계산식인 a*b를 수행하는 것이죠. -> 그러니까 쉽게말해서 operateTwo(4와 3이 있고 이거를 곱해라) 라는 함수입니다. -> 결과는 12가 나오게 됩니다! ㅎㅎㅎㅎ하하하하하

 

죄송해요 설명이 너무 부족하니 Google에 "Swift closure란?" 이라고 치시면 아주 자세하게 나오니 그것을 참고하시면 되겠습니다!

 

감사합니다!>_<  

728x90