Мисля, че може да е полезно да има метод convertTo
или друго име в Any
клас, който ще получи функция, която го преобразува в друг val. Подписът на този метод може да бъде такъв (пример А):
def convertTo[T](convertor: this.type => T) : T = convertor(this)
С този метод разработчикът може просто да конвертира един обект в друг с помощта на конвертор. В реалния живот може да се използва за преобразуване от List[Future[T]]
да се Future[List[T]]
с този код (пример Б):
/* long code, which constructs List[Future[T]] */ convertTo { list => Future.sequence(list) }
вместо това (пример В):
Future.sequence( /* long code, which constructs List[Future[T]] */ )
Мисля, че кодът в пример Б е много по-функционален, този код в пример С. И така, имам два въпроса:
- Подходяща ли е към кодиращата парадигма във функционален стил?
- Има ли вече съществуваща библиотека за Scala, която предоставя нещо подобно?
Отговори:
1 за отговор № 1„Функционален“ означава много неща за много хора. Мисля, че този стил може (понякога) да направи код по-четим, тъй като прави кода да съответства по-близо до потока от данни, но не бих го описал като "по-функционален".
Какво ще кажете за scalaz
|>
?, напр.[code that constructs List[Future[T]]]] |> Future.sequence
Обърнете внимание, че това работи с която и да е функция, не е непременно "convertTo".