Hi,
By exploring Julia I'm curios what would be a best way to implement
strategy design pattern in Julia. I'm posting a C++ example, for which I
would like to write equivalent in Julia.
Thanks.
#include <functional>
#include <iostream>
#include <vector>
template<typename T>
void foo_t(const T& t)
{
std::cout << "I'm using foo_t... \n";
for (auto a : t) std::cout << a << '\n';
}
template<typename T>
void bar_t(const T& t)
{
std::cout << "I'm usimg bar_t... \n";
for (auto a : t) std::cout << a+10 << '\n';
}
template<typename T>
class alg_t
{
public:
template<typename F>
explicit alg_t(F strategy) : strategy(std::move(strategy)) { }
void run(const T& t) { strategy(t); }
private:
std::function<void(const T&)> strategy;
};
int main()
{
using VcD = std::vector<double>;
VcD vec{1., 2., 3.};
alg_t<VcD> alg_foo(foo_t<VcD>);
alg_foo.run(vec);
alg_t<VcD> alg_bar(bar_t<VcD>);
alg_bar.run(vec);
return 0;
}