안녕하세요~! 오늘은 isMultiple(of:)에 대해서 소개해 드리겠습니다. isMultiple(of:)는 배수인지 판단하는 메서드입니다. 여기서 배수는 어떤 정수와 다른 정수를 곱했을 때 나오는 수입니다. 예를 들어 6 = 2 * 3이므로 6은 3의 배수입니다. 아래 코드 처럼 이전에는 % 연산자를 사용해서 배수를 판단하는 코드를 작성했었죠 그렇다면 isMultiple(of:)와 어떤 문제를 해결 할 수 있길래 애플에서 공식적으로 제공하고 있을까요? let number = 6 if number % 3 == 0 { print("6은 3의배수") } 첫 번째로, 0으로 나누는 상황을 볼 수 있는데요. number % 0 == 0 은 무조건 참 입니다. number.isMultiple(of: 0)은 nu..
안녕하세요~! 최근 버전에서는 나타나지 않지만 Swift4.2 이하 스위프트 버전에서는 언래핑 작업이나 try?로 옵셔널 값을 가져올때 중첩된 ????을 볼 수 있었습니다. 하지만 Swift5.0부터는 그렇게 처리되지 않는데요 아래 예제코드를 함께 보시면서 어떻게 달라졌는지 보겠습니다. struct User { var id: Int init?(id: Int) { if id String { // complicated code here return "No messages" } } User 구조체 안에 옵셔널 초기화가 있습니다. 조건에 맞는 아이디가 들어와야만 유저가 생성되도록 하기 위함 입니다. ..
안녕하세요~! 오늘은 새롭게 소개된 Result Type을 소개해 드리려고합니다. Result Type은 아래 코드 처럼 enum으로 선언 되어있고 성공과, 실패를 Generic으로 받고 있습니다. 실패는 무조건 에러 타입이구요 @frozen enum Result where Failure : Error 기존의 에러처리 방식을 개선하고 결과값을 명확히 받기 위해 Result Type이 나왔다고 보여지는데요. 왜 그런지 아래 예제를 통해 함께 보시죠~! 아래 주문을 받는 받았을 때 발생 할 수 있는 간단한 에러를 정의 했습니다. enum OrderError: Error { case LackOfMoney } 메뉴는 햄버거가 좋을거 같아요. 햄버거 종류와 종류에 따른 가격을 받을 수 있습니다. enum Hamb..
안녕하세요! 오늘은 .compactMapValues에 대해서 소개해 드리려고 합니다~! 찾아보니 정말 편리하다고 느꼈는데요. 왜 그런지 같이 살펴보시죠~! 예시를 들면서 소개해 드리면 좋을거 같습니다. 아래 코드를 보시죠 let d: [String: String?] = ["a": "1", "b": nil, "c": "3"] let r1 = d.filter { $0.value != nil }.mapValues { $0! } let r2 = d.reduce(into: [String: String]()) { (result, item) in result[item.key] = item.value } // r1 == r2 == ["a": "1", "c": "3"] Dictionary 값에 문자, nil 값이 같이 ..