본문 바로가기

Programming/Swift

[Swift] Triple 구현해보기

Kotlin에는 Pair, Triple과 같이 2개, 혹은 3개의 값만 받는 타입이 따로 있다.

자세한 건 문서를 확인하자.

 

Triple - Kotlin Programming Language

 

kotlinlang.org

Kotlin 공식 문서에 있는 Triple 예제

위 사진처럼 다양한 타입의 3가지 값을 받는다. 

이를 Swift로 구현해보자 한다.

 

시작하기 전 Swift에 있는 Tuple을 참고하면 좋다.

 

Triple의 init 및 properties

1. Triple은 first, second, third라는 프로퍼티를 가진다.

2. 각 프로퍼티들의 타입은 A, B, C이며 각각 아래와 같은 역할을 한다.

A, B, C 순서대로 first, second, third의 타입이다.

 

이를 Swift코드로 구현해 보았다.

class Triple<A: Any, B: Any, C: Any> {
  var first: A
  var second: B
  var third: C

  init(_ first: A, _ second: B, _ third: C) {
    self.first = first
    self.second = second
    self.third = third
  }
}

각 A, B, C는 어떤 타입도 올 수 있기에 Any로 했다.

 

Triple에는 다음과 같은 함수들이 있기에 추가해줬다.

 

toList()와 toString()

 

toList()는 Any타입의 배열을 반환하게 했다. toString 또한 String으로 반환하게 하여 간단하게 처리했다.

func toList() -> [Any] {
    return [first, second, third]
  }

  func toString() -> String {
    return "(\(first), \(second), \(third))"
  }

 

 

전체 코드

import UIKit

class Triple<A: Any, B: Any, C: Any> {
  var first: A
  var second: B
  var third: C

  init(_ first: A, _ second: B, _ third: C) {
    self.first = first
    self.second = second
    self.third = third
  }

  func toList() -> [Any] {
    return [first, second, third]
  }

  func toString() -> String {
    return "(\(first), \(second), \(third))"
  }
}

let triple = Triple(1, "A", "Choi")

print(triple.toList())
print(triple.toString())

전체 코드이다. triple이라는 변수에 위와 같이 값을 넣어주고 출력을 하면

 

[1, "A", "Choi"]
(1, A, Choi)

이렇게 나온다. 

 

Pair는 저기서 third만 삭제해주면 된다.

실제 Kotlin에서는 out이라는 키워드를 사용하고 toList() 함수를 밖에 꺼내서 사용하는 등 조금 다른데 이 부분은 조금 더 공부해봐야 할 것 같다.

'Programming > Swift' 카테고리의 다른 글

[Swift] Foundation, UIKit, Swift  (0) 2020.03.29