IT 관련/개발(Swift)

#1 Swift 현재까지 배운 것 정리(Set, Array, Dictionary 위주로)

Entkommen 2022. 5. 11.
728x90

 Codecademy에서 Swift 개발 코스를 수강하고 있는데, 매일 조금씩 하긴 하더라도 앞부분을 자꾸 까먹어서(특히 Array, Set, Dictionary 같은 것들) 복습내용을 총 정리하여 기록하고자 한다. 현재 총 60퍼센트 수강했고 function을 절반정도 끝냈다. 이 게시글에서는 Set, Array Dictionary 위주로 정리(특희 선언하는게 자꾸 헷갈린다)하고 다음 게시물에서는 If문이나 삼항연산 등 복잡하다고 느낀부분을 정리하려고 한다. 

 

특별히 기억에 남는 Morsecode 관련 과제는 개인적으로 이해하기가 너무 힘들었어서 다시 공부할 필요를 느낀다. 

 

1 Set 

 1-1 Set 선언 (unique한 element를 포함) 

  var setName : Set = ["a", "b", "c"]

 

 1-2 빈 Set 선언 

  var setName= <Set>() 

 

 1-3 여러 method 

   .insert() 삽입

   .remove() 해당 요소 제거 ( parenthes 안에 들어있는 element가 제거됨)

   .removeAll() 모두 제거 

   .contains() - parenthes 안에 있는 element가 Set에 존재한다면 True, 아니라면 False를 반환함 

 

 1-4 Set의 반복(Iteration)

   for - in 구문을 활용한다. 

   ex) 

    var class: Set = ["Kim", "Lee", "Park", "Choi"]
    for names in class {
               print ("\(name) is in this class")
                  }

 

  1-5 Set의 연산 method (교집합, 합집합, 여집합, 차집합 개념)

    .intersection()

    .union()

    .symmetricDifference()

    .substracting()

 

2 Array

 같은 데이터 타입을 가지는 값(value)들을 저장함

 

   2-1 Array의 선언법(개인적으로 자꾸 까먹는 부분, Set 선언법과 자꾸헷갈린다)

 

   2-1.1 [Type]() 와 같은 양식으로 빈 Array를 선언할 수 있다  - initializer syntax라고 부른다. 

    ex)

    var name = [String]()

 

   2-1.2 Array Literal로 Araay 선언하기. - Array Literal 이란, 축약된 방식으로 array 를 만드는 방법을 말하는 것같다.              Codecademy 강의에서 내가 이해한 것으로는 위의 initializer syntax와 대비되는 방법을 말하는 것 같았다. 

          이 방식으로도 빈 array를 선언할 수 있다. 

 

  두가지방법이 있는데 

   1)타입을 지정하기

      var age: [Int] = [33, 31, 30, 38, 44]

 

   2)타입 지정을 안하기(Swift의 Type interference 를 활용하기) 

      var score = [2.4, 3.6, 3.4, 1.8, 0.0]

  또한     var name : Array<Type> = [] 이런식으로도 선언할 수 있다.

  

 

2-2 Index

 array[index]의 양식

 zero-indexed로서 첫 번째의 원소는 0번이다. 

 

2-3 여러 Property 들

.count 

.append() 그리고 += 연산자

 

 ->여기서 실수했던 부분이 arrayName.append()를 하면 바로 값이 반환되는 것인데 이걸 잘 모르고 arrayName=arrayName.append() 이런식으로 했던 적이 있었다. 그랬을 때 아래와 같은 오류가 발생한 적 이있었다. 

아래 글에서도 나와있지만 .append()등으로 된 것들은 자체적으로 값을 반환하는 것으로 이해했다. +=연산자로 추가하는 것과 헷갈렸던 적이 있어서 기록해 둔다. 

Swift cannot assign value of type '()' to type 'String?'

 

Swift cannot assign value of type '()' to type 'String?'

I'm learning Swift2/iOS app development. I am confused by an error being thrown by Xcode before compiling. Here is the code throwing the error : let dotpos = display.text!.rangeOfString(".") if do...

stackoverflow.com

 

.insert() -> value, at (at 뒤의 숫자가 곧 index) 을 argument로 필요로 한다

 ex) arrayName.insert( value, at: )

 

.remove() -> index만을 argument로 필요로 한다 

ex) arrayName.remove( at: )

 

2-4 Array의 반복(Iteration) - 결국 For - in과 While 문에 대한 설명이 되겠다. 

 

 for - in loop를 사용할 때 뒤에 String, Range 등을 이용 할 수 있다. 

 

  in 다음에 String Type의 값이 오면(ex. "papa") 반복 되면서 순차적으로 placeholder에  "p" "a" "p" "a"를 반환한다 

  in 다음에 오는 것으로 ranges 를 사용할 수 있다 .

      ex) 0...3 (이때 3을 포함한다 = 0 1 2 3) 

 

 stride() 함수를 사용할 수 있다. argument로 from, to , by를 필요로한다. 

  짝수를 호출하고 싶다면 

 

  for evenNum in stride(from:0, to:6, by2) {

     body 내용 } 

 

  이런식으로 응용가능하다. 

  

continue 를 응용하면 , 반복시 해당 반복은 건너뛰게 된다 .

break를 응용하면 , 해당 반복은 거기서 종료가 된다. 

 

continue와 break를 응용하기위해 if 구문을 사용하는 것 같다. 

 

underscore(밑줄)을 placeholder(for 와 in 사이)에 삽입할 수 있다.

변수를 참조하지 않을 때 사용하게 된다. (그냥 무작정 반복하고싶을 때?로 이해했다)

for _ in 1...100 { print("안녕!") } 

이렇게 되면 안녕! 이라는 글자가 100번 나오게 된다. 

 

 

While 문

 while 반복문은 주어진 조건이 참일 경우에 계속해서 반복하여 body 내부에 있는 내용을 실행하게 된다. 

 부등호를 이용하여 일정 횟수만큼 반복하게 할 수도 있다. 

 

 

   

 

     

 

  

 

 

728x90

'IT 관련 > 개발(Swift)' 카테고리의 다른 글

Swift 공부 , #2 Struct 에 대해서 .  (0) 2022.06.02