[Julia] 제너릭 함수

[원본 링크]

구조체와 마찬가지로 함수도 타입을 일반화할 수 있다.

함수의 제너릭 인자는 where 절을 다는 것으로 정의할 수 있다.
이런식으로 말이다.

그러면 T는 모든 타입에 대응될 수 있는 제너릭 인자가 된다.
타입 안전하면서도 다형적인 행동을 할 수 있는 것이다.



타입 인자 제약

근데 저러기만 해서는 타입을 사용하지 않고 동적 타입을 사용하는 것과 큰 차이가 없다.
더욱 안정적인 제너릭을 정의하고 싶다면 해당 타입인자에 제약을 거는 것이 좋다. 새 추상 타입을 만들어서라도 말이다.

만약 숫자타입만을 받아야 한다면 이렇게 타입제약을 달아준다.

그럼 T는 언제나 Number거나 그 하위타입이어야만 한다.

이렇게 했을 경우, Number에 부합하는 타입이 들어올 때는 잘 컴파일되지만

Number가 아닌 String 등의 타입이 들어오면

에러를 튕길 것이다

이런 식으로 쓰면 된다.