TIL

TIL ('21.02.26)

learner._.Kio 2021. 2. 27. 16:33

학습내용

09:30~12:15 Optional

  • Optional은 값이 없는 것이다.
  • Optional은 머리가 아프다.

13:30~15:00 셀프캠

  • 당연히 수요일이면 하겠지 싶었지만 금요일까지 끌고 왔다. 셀프캠을 먼저 찍자고 해준 Ryan! 그것은 신의 한수였다.. 프로젝트는 더 오래 걸렸다.

15:00~ 야구게임 프로젝트 Step2 상호 코드리뷰 후 병합하여 PR

  • step2를 각자 해본 방식으로 코드리뷰를 먼저 했다. 구현하지 못한부분이 많았는데 코드리뷰를 하면서, 혹은 질문을 던지는 와중에 아주 작은거지만 문득 깨닫는 순간이 와서 기분은 좋았다. 기본 문법을 숙지하지 않은 상태에서 코드를 짜는 건 쉽지 않다. 아니, 쉽지 않은 정도가 아니고 힘들다. 그래도 차근차근해보자.

고민한 점

  • 변수 네이밍은 고민이 끝나지 않는다.
  • // vs ///
  • 주석 없이 코드만으로 모든 설명을 하려면?

새로 알게 된 점

Swift Design API Guideline

  • 무조건 공식문서 먼저 찾아보기!
  • Swift Design API Guideline이 공식문서라는 것도 오늘야 깨달았다.

Array 배열

  • 배열에 nill을 넣으면 어떻게 될까?

    var emptyNumbers:[Int?] = [0,0,0]
    var emptyNumbers2:[Int?] = []
    for i in 0...2 {
        emptyNumbers[i] = nil
        emptyNumbers2.append(nil)
    }
    print(emptyNumbers) // [nil, nil, nil]
    print(emptyNumbers2) // [nil, nil, nil]

Optional

  • 옵셔널을 사용하는 이유
    • 변환 못하면 nil 값을 넣고 프로그램에 지장없이 하겠다.
    • nil 가능성을 문서화 하지 않아도 코드만으로 충분히 표현 가능
      • 문서/주석 작성 시간을 절약
    • 전달받은 값이 optional이 아니라면 nil체크를 하지 않더라도 안심하고 사용
      • 효율적인 코딩
      • 예외 상황을 최소화하는 안전한 코딩

Set

Set은 중복값을 제거해주는 것이다.

apple 공식문서
let ingredients: Set = ["cocoa beans", "sugar", "cocoa butter", "salt"]
if ingredients.contains("sugar") {
    print("No thanks, too sweet.")
}
// Prints "No thanks, too sweet."
#A Set을 모를 때 작성한 코드 ↓
var numbers = [1,2,2,3]
var count = 0

if numbers[0] == numbers[1] ||
    numbers[0] == numbers[2] ||
    numbers[2] == numbers[3] {
    count += 1
}
if numbers[1] == numbers[2] || numbers[1] == numbers[3] {
    count += 1
}
if numbers[2] == numbers[3] {
    count += 1
}

print(numbers.count-count) // 3
#B Set을 알고 작성한 코드 ↓
var numbers = [1,2,2,3]
var count = 0

Set(numbers).count // 3
  • 기본 문법도 몰라서 #A에서 코드가 길어진 것도 사실이긴 하지만 Set을 활용하니 확연히 줄어들긴 했다.
  • 배열을 ( ) 로 감싸는 것으로 아주 간결해졌다. set은 중복값 관련하여 사용할 때 좋을 것 같다.