함수가 인자를 많이 받다 보면, 인자를 어떤 순서로 넘겨야 하는지 기억하기 어려울 때가 있어요. 그래서 Gleam에서는 가독성을 높이기 위해 인자에 이름을 붙일 수 있게 해줘요.
인자에 레이블을 붙이려면 인자 이름 앞에 레이블 이름을 쓰고, 둘 사이를 공백으로 구분해요.
pub fn replace(
in string: String,
each target: String,
with replacement: String
) -> String {
// ...
}
레이블 인자가 있는 함수를 호출할 때에는 인자를 어떤 순서로 넘겨도 돼요. 다음 replace 호출은 모두 같은 의미예요:
replace(in: "🍔🍔🍔", each: "🍔", with: "🍕")
replace(each: "🍔", in: "🍔🍔🍔", with: "🍕")
replace(with: "🍕", each: "🍔", in: "🍔🍔🍔")
레이블은 언제나 선택 사항이에요. 함수에 레이블 인자가 있더라도 레이블 없이 호출할 수 있어요.
replace("🍔🍔🍔", "🍔", "🍕")
여러분은 규모가 꽤 큰 와인 저장고를 갖춘 고급 레스토랑에서 매니저로 일하고 있어요. 손님 중에는 까다로운 와인 애호가가 많아요. 특정 손님에게 꼭 맞는 와인 한 병을 고르는 일은 쉽지 않아요.
기술에 밝은 레스토랑 사장답게, 손님이 취향에 따라 와인을 걸러 볼 수 있는 앱을 만들어 와인 선택 과정의 속도를 높이기로 했어요.
와인 한 병은 사용자 정의 타입으로 표현하고, 와인은 배열에 저장해요.
[
Wine("Chardonnay", 2015, "Italy", White),
Wine("Pinot grigio", 2017, "Germany", White),
Wine("Pinot noir", 2016, "France", Red),
Wine("Dornfelder", 2018, "Germany", Rose)
]
wines_of_color 함수를 구현해요. 와인 배열을 받아 주어진 색상의 와인을 모두 반환해야 해요.
wines_of_color(
[
Wine("Chardonnay", 2015, "Italy", White),
Wine("Pinot grigio", 2017, "Germany", White),
Wine("Pinot noir", 2016, "France", Red),
Wine("Dornfelder", 2018, "Germany", Rose)
],
color: White
)
// -> [
// Wine("Chardonnay", 2015, "Italy", White),
// Wine("Pinot grigio", 2017, "Germany", White),
// ]
wines_from_country 함수를 구현해요. 와인 배열과 국가를 받아, 주어진 국가에서 생산된 와인을 모두 반환해야 해요.
wines_from_country(
[
Wine("Chardonnay", 2015, "Italy", White),
Wine("Pinot grigio", 2017, "Germany", White),
Wine("Pinot noir", 2016, "France", Red),
Wine("Dornfelder", 2018, "Germany", Rose)
],
country: "Germany"
)
// -> [
// Wine("Dornfelder", 2018, "Germany", Rose)
// ]
filter 함수를 구현해요. 와인 배열, 색상, 국가를 받아 주어진 국가에서 생산된 주어진 색상의 와인을 모두 반환해야 해요.
filter(
[
Wine("Chardonnay", 2015, "Italy", White),
Wine("Pinot grigio", 2017, "Germany", White),
Wine("Pinot noir", 2016, "France", Red),
Wine("Dornfelder", 2018, "Germany", Rose)
],
color: White
country: "Italy"
)
// -> [
// Wine("Chardonnay", 2015, "Italy", White),
// ]
Exercism에 가입하고 Gleam 트랙을 개념 33개연습 문제 122개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.