/ / Scala. Преобразувайте всеки вал в друга стойност във функционален стил - скала, функционално програмиране

Scala. Преобразувайте всяка вълна в друга стойност във функционален стил - скала, функционално програмиране

Мисля, че може да е полезно да има метод 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]] */ )

Мисля, че кодът в пример Б е много по-функционален, този код в пример С. И така, имам два въпроса:

  1. Подходяща ли е към кодиращата парадигма във функционален стил?
  2. Има ли вече съществуваща библиотека за Scala, която предоставя нещо подобно?

Отговори:

1 за отговор № 1
  1. „Функционален“ означава много неща за много хора. Мисля, че този стил може (понякога) да направи код по-четим, тъй като прави кода да съответства по-близо до потока от данни, но не бих го описал като "по-функционален".

  2. Какво ще кажете за scalaz |>?, напр.

    [code that constructs List[Future[T]]]] |> Future.sequence

Обърнете внимание, че това работи с която и да е функция, не е непременно "convertTo".