1

Итак, я хотел бы реализовать функциональное программирование на C++, как это было бы сделано в scala.Как преобразовать функцию scala в качестве параметра в C++?

Так позволяет сказать, что у меня есть этот код в Скале:

def exampleA(l: List[P], f: P => Option[P]): Option[P] = l match { 
    case Nil => None 
    case x :: l => val a = f(x); if (a.notDefined) exampleA(l, f) else a 
} 

Она занимает в списке P, и a function as parameter. Он вернет первый элемент в списке.

Теперь я хотел бы сделать то же самое в C++, и я уже запутался, потому что информация о функции вызова в качестве параметра отсутствует.

Так что это то, что я до сих пор:

typedef vector<pair<int,int> > P; 

P exampleB(P (*f)(int,Path)) { 
    cout << (*f)->first << endl; 
} 


P exampleBA(int dim, Path path) { 
    exampleB(exampleBA); 
} 

Я хотел бы получить доступ к first элемент пары внутри P внутри example() метода.

Как это сделать?

+0

Я бы не sugest использовать тот же стиль в C++, как и в Скале. Они разные звери, и если ваш код используется программистами на C++, они будут немного смущены. Вы знаете ... когда в Риме делайте то, что делают римляне. –

ответ

Смежные вопросы