-
Swift - Tuple Decomposition, MatchingProgramming/Swift 2020. 10. 13. 17:17
안녕하세요 :)
오늘은 Tuple Decompostion과 Tuple Matchng에 대해서 같이 공부해 보도록 해요!
Tuple Decomposition
Tuple을 생성했는데 Tuple Member를 각각 상수나 변수에 저장해야 할 때가 있습니다.
이럴 때 어떻게 하면 될까요??
이렇게 상수나 변수에 각 멤버의 값을 할당하면 됩니다.
이 방법을 사용해도 오류가 발생하지는 않죠? 하지만 이때 Tuple Decompostion을 사용하면 코드를 더 깔끔하게 만들 수 있습니다.
문법은 이렇습니다.
여기서 주의할 점은 Tuple Member의 수와 생성할 상수나 변수의 이름의 개수가 일치해야 합니다.
그렇다면 address는 상수나 변수로 만들고 싶지 않다면 어떻게 해야 할까요??
이때는 _(WildcardPattern)을 사용해서 address를 저장할 상수나 변수를 생략해줘야 합니다!
Tuple Matching
Tuple을 조건에 따라 분기를 해야 할 경우가 있습니다.
이때 if와 switch 둘 다 사용해도 문제는 없지만 switch문은 Tuple Matching을 지원합니다.
switch문에서 value에 TupleExpression을 사용할 수 있습니다.
먼저 if문을 먼저 사용해 볼게요!
bus의 색이 Red이고 가격이 2000원 이상이면 이 버스는 광역 버스라는 것을 나타내는 코드입니다.
같은 코드를 switch문을 사용해서 작성해 보겠습니다.
case 에는 Tuple Member의 순서대로 값을 적어줍니다.
마찬가지로 이 경우에도 Member의 수와 값의 수가 일치해야 합니다.
2000... 과 같이 Interval Matching도 사용 가능합니다.
case ("Red", 2000...):은 bus.color == "Red" && bus.price >= 2000와 같은 코드입니다.
한눈에 봐도 코드가 간단해졌죠??
또한 ValueBinding과 Wildcard Pattern 그리고 Where을 사용할 수 있습니다.
이 코드를 살펴보도록 하겠습니다.
price를 won으로 바인딩을 시키고 won이 2000보다 크거나 같은지 조건을 확인합니다.
이렇게 tuple matching에서 조건을 추가하고 싶다면 where을 사용하면 됩니다.
참고자료
https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
728x90'Programming > Swift' 카테고리의 다른 글
Swift - String - Escape sequence, String Interpolation (0) 2020.10.15 Swift - String - String의 종류, Multi-line String Literal (0) 2020.10.14 Swift - Tuple (0) 2020.10.12 Swift - Closure (1) 2020.10.11 Swift - Function Notation, Function Type (0) 2020.10.09