책: 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 타입으로 반환을 해도 문제가 없다고 생각되는데, 에러가 뜨니 이유를 모르겠네요.
답변 정말 감사드립니다.