제네

제네릭 에서 Gleam

10개의 연습 문제

제네릭 소개

어떤 타입이 _타입 매개변수_를 사용해 모든 타입의 값을 담을 수 있으면, 그 타입을 _제네릭 타입_이라고 해요.

예를 들어, 이 Box 타입에는 a라는 타입 매개변수가 있어요 (소문자로 써요).

pub type Box(a) {
  Box(a)
}

a 타입 매개변수는 모든 타입을 대신하는 자리표시자라서, Box는 문자열이나 정수, 그 밖의 다른 어떤 타입과도 함께 쓸 수 있어요.

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

타입은 타입 매개변수를 쉼표로 구분해 여러 개 가질 수 있어요.

pub type Pair(a, b) {
  Pair(a, b)
}

제네릭 함수

타입 매개변수는 함수의 인자에도 쓸 수 있어요.

이 함수는 a 타입의 값을 받아서, a를 받고 b를 반환하는 함수를 두 번 호출해요.

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

제네릭 배우기

연습이 잠겨 있어요

제네릭 개념을 연습하려면 연습 문제 3개를 더 잠금 해제해요