Вашему вниманию будет представлен паттерн для создания «мини-DSL» на Scala для оперирования единицами измерения. Одну из реализаций этого паттерна можно увидеть в стандартной библиотеке Scala, а именно — в scala.concurrent.duration._. Пример из документации по Akka[1]:
В данном случае Int неявно конвертируется в объект с методом «seconds», который затем возвращает требуемый функции тип.
Далее будет рассмотрено пошаговое создание «мини-DSL» для оперирования частотой. В конечном итоге планируется получить возможность задавать частоту естественным образом, например, 5 kHz.
implicit val timeout = Timeout(5 seconds)
В данном случае Int неявно конвертируется в объект с методом «seconds», который затем возвращает требуемый функции тип.
Далее будет рассмотрено пошаговое создание «мини-DSL» для оперирования частотой. В конечном итоге планируется получить возможность задавать частоту естественным образом, например, 5 kHz.