前言:
而今大家对“js链式调用如何实现”大约比较重视,姐妹们都需要分析一些“js链式调用如何实现”的相关文章。那么小编同时在网络上搜集了一些对于“js链式调用如何实现””的相关文章,希望我们能喜欢,姐妹们快快来学习一下吧!CRTP(Curiously recurring template pattern),奇异递归模板模式是C++模板编程时的一种惯用法:把派生类作为基类的模板参数。
链式调用是种语法糖,简化对一个对象的反复操作,并且阅读起来也很美观。
obj.seta().setb().setc();
#include <iostream>enum Color {RED, GREEN, BLUE};// Base classtemplate <typename CustomPrinter>class Printer {public: explicit Printer(std::ostream& pstream) : m_stream(pstream) {} template <typename T> CustomPrinter& print(T&& t) { m_stream << t; return static_cast<CustomPrinter&>(*this); } template <typename T> CustomPrinter& println(T&& t) { m_stream << t << std::endl; return static_cast<CustomPrinter&>(*this); }private: std::ostream& m_stream;}; // Derived classclass ColorPrinter : public Printer<ColorPrinter> {public: ColorPrinter() : Printer(std::cout) {} ColorPrinter& set_console_color(Color c) { switch(c){ case BLUE: std::cout << "\033[0;1;34m"; break; case RED: std::cout << "\033[0;1;31m"; break; case GREEN: std::cout << "\033[0;1;32m"; break; } return *this; }};int main() { // usage ColorPrinter().print("Hello ").set_console_color(RED).println("World!");}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js链式调用如何实现