맵, 필터, 리듀스 직접 구현하기 질문드려요.

0 답변 글타래를 보이고 있습니다
  • 글쓴이
    • Zizi_Kim
      참가자
      • 글작성 : 1
      • 답글작성 : 0

      책: Swift 3판 (야곰, 한빛미디어), P. 443 (코드 23-6)

       

      안녕하세요. 책을 보고 공부하다 지네릭스 적용과 해석이 헷갈려 질문드립니다. 

       

          func map<T>(transform: (Element) -> T) -> Stack<T> {

              var mapStack: Stack<T> = Stack<T>()

              

              for item in items {

                  mapStack.items.append(transform(item))

              }

              return mapStack

          }

       

      var stack: Stack<Int> = Stack<Int>()

      <..생략..>

      stack = stack.map { Double($0 * 3) } // 에러 코드 Cannot convert value of type ‘Double’ to closure result type ‘Int’ – 질문 코드입니다.

      print(stack.items)

       

      map 함수 구현에서 타입 매개변수를 Element와 T를 사용했는데, T는 언제 타입이 결정되는 건가요?  transform(_:) 함수에서 결과값이 반환될 때 결정되는 건가요?  

      Double 타입으로 변환하려니 에러가 출력됩니다. 반환 타입은 타입 매개변수 T이므로 Double 타입으로 반환을 해도 문제가 없다고 생각되는데, 에러가 뜨니 이유를 모르겠네요.

       

      답변 정말 감사드립니다.

       

0 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 260-27-00477
통신판매업 신고번호 : 제 2020-충북청주-0663 호
고객센터 : 카카오톡채널 @yagom