Week 2: Assignment

깃허브 링크

# 클로저를 이용해서 상수/변수 선언하기

  • 실제 과제 의도는 모르겠지만 나는 게임을 한 번 시행하면 각 테마의 색깔이 최초에 랜덤으로 지정되고 그 색이 유지되기를 바랬는데 New Game 버튼을 누를 때마다 매번 모든 테마의 색깔이 랜덤으로 바뀌었다...찾아보니 computed propertystatic 이어도 구조체에 변화가 생길 때마다 매번 다시 연산 되기 때문이었음!

  • 그래서 함수를 사용하되 stored property 를 선언할 수 있는 방법이 없을까 하고 찾아보다가 let variable = { // some closure }() 와 같은 형식으로 선언하면 클로저의 리턴값 이 저장됨을 배울 수 있었다

    static var themes: [Theme] = {
        var themes = [Theme]()
        let defaultPairsOfCards = 8
        themes.append(createTheme("Vehicles", vehicleEmojis, defaultPairsOfCards))
        themes.append(createTheme("Animals", animalEmojis, defaultPairsOfCards))
        themes.append(createTheme("Food", foodEmojis, defaultPairsOfCards))
        themes.append(createTheme("Hearts", heartEmojis, defaultPairsOfCards))
        themes.append(createTheme("Sports", sportsEmojis, defaultPairsOfCards))
        themes.append(createTheme("Weather", weatherEmojis, defaultPairsOfCards))
        return themes
    }()


☀️ TIL

  • 얼레벌레 구현하기는 했는데 맞는 방향으로 한 건지는 모르겠다...뷰모델 짱더러움...ㅋㅎㅋㅎㅋㅎ 나름대로 기본 로직과 구조는 모델 안에 모델과 뷰를 연결하는 내용은 뷰 모델에, 상호작용 입력 받는 건 뷰에 할당해서 MVVM을 해본다고 해보긴 했는데 다음 강의를 봐야 어느정도 맞게 했는지 알 수 있을 것 같다

  • 그리고 아직 잘 모르겠는건 언제는 static 으로 선언하는 게 낫고 언제는 그냥 init 으로 처리하는 게 나은지...?

좋은 웹페이지 즐겨찾기