Generic functions
Дотук всяка функция приемаше точно един тип за всеки от аргументите си.
Функцията twice
(два пъти) от предния урок за функции от
по-висок ред работеше само с функции, които приемат и връщат цели
числа. Това е прекалено ограничаващо, би трябвало да можем да използваме тази
функция с всякакви типове, стига подаваната функция и първоначалната стойност
да са съвместими.
За да стане това, Gleam поддържа обобщени функции (generics), известни още като параметричен полиморфизъм.
Това се прави като се използва променлива за тип, вместо да се указва конкретен тип. Тя е заместител (placeholder) на какъвто специфичен тип се използва при извикване на функцията. Тези променливи за тип се пишат с имена с малки букви.
Променливите за тип не са като тип any
, те се заместват с
конкретен тип при всяко извикване на функцията. Опитайте да разокоментирате
twice(10, exclaim)
, за да видите грешка при компилация, защото се
опитваме да използваме променлива за тип и за цяло число, и за символен низ
едновременно.