Передача последовательности функций Scala в качестве типа аргумента - PullRequest
0 голосов
/ 16 октября 2018

Чтобы передать различные функции преобразования данных, я хочу перебрать последовательность функций и применить каждую к начальному вводу.Для одного входа это будет примерно так:

def transformPipeline(f: MyType => MyType)(val: MyType): MyType = {...}

Как я могу определить эту функцию так, чтобы вместо принятия одного f: MyType => MyType она принимала что-то вроде Seq(f: MyType => MyType)

например,

def transformPipeline(f: Seq[MyType => MyType])(val: MyType): MyType = {...}

1 Ответ

0 голосов
/ 16 октября 2018

Если я правильно понимаю ваш вопрос, то это может быть то, что вы ищете.

def transformPipeline(fs: Seq[MyType => MyType])(init: MyType): MyType =
  fs.foldLeft(init)((v, f) => f(v))

Проверено так:

type MyType = Int

transformPipeline(Seq(_+1,_*2,_/3))(17)  //res0: MyType = 12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...