55 < meta http-equiv ="X-UA-Compatible " content ="IE=edge ">
66 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
77
8-
8+ < meta name =" author " content =" 小彭老师 " >
99
1010 < link rel ="shortcut icon " href ="../img/favicon.ico ">
1111 < title > 函数式编程 - ✝️小彭大典✝️</ title >
2525 < link href ="../css/print-site-enum-headings6.css " rel ="stylesheet ">
2626 < link href ="../css/print-site.css " rel ="stylesheet ">
2727 < link href ="../css/print-site-mkdocs.css " rel ="stylesheet ">
28+ < link href ="../extra.css " rel ="stylesheet ">
2829 < script src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js "> </ script >
2930 < script > hljs . highlightAll ( ) ; </ script >
3031 </ head >
6364</ li >
6465
6566< li >
66- < a href ="../functions/ " class ="dropdown-item "> 自定义函数 (未完工)</ a >
67+ < a href ="../functions/ " class ="dropdown-item "> 认识函数 (未完工)</ a >
6768</ li >
6869
6970< li >
7071 < a href ="./ " class ="dropdown-item active " aria-current ="page "> 函数式编程</ a >
7172</ li >
7273
74+ < li >
75+ < a href ="../design/ " class ="dropdown-item "> 设计模式 (未完工)</ a >
76+ </ li >
77+
7378< li >
7479 < a href ="../unicode/ " class ="dropdown-item "> 字符编码那些事</ a >
7580</ li >
95100 </ a >
96101 </ li >
97102 < li class ="nav-item ">
98- < a rel ="next " href ="../unicode / " class ="nav-link ">
103+ < a rel ="next " href ="../design / " class ="nav-link ">
99104 Next < i class ="fa fa-arrow-right "> </ i >
100105 </ a >
101106 </ li >
107+ < li class ="nav-item ">
108+ < a href ="https://github.com/parallel101/cppguidebook/edit/master/docs/functional.md " class ="nav-link "> < i class ="fa-brands fa-github "> </ i > Edit on GitHub</ a >
109+ </ li >
102110 </ ul >
103111 </ div >
104112 </ div >
139147 < div class ="col-md-9 " role ="main ">
140148
141149< h1 id ="_1 "> 函数式编程</ h1 >
150+ < div class ="toc ">
151+ < ul >
152+ < li > < a href ="#_1 "> 函数式编程</ a > < ul >
153+ < li > < a href ="#_2 "> 为什么需要函数?</ a > < ul >
154+ < li > < a href ="#_3 "> 狂想:没有函数的世界?</ a > </ li >
155+ < li > < a href ="#_4 "> 设计模式追求的是“可改”而不是“可读”!</ a > </ li >
156+ < li > < a href ="#_5 "> 用函数封装</ a > </ li >
157+ < li > < a href ="#_6 "> 要封装,但不要耦合</ a > </ li >
158+ < li > < a href ="#_7 "> 每个函数应该职责单一,别一心多用</ a > </ li >
159+ < li > < a href ="#_8 "> 二次封装</ a > </ li >
160+ < li > < a href ="#linus-3-24 "> Linus 的最佳实践:每个函数不要超过 3 层嵌套,函数体不要超过 24 行</ a > </ li >
161+ </ ul >
162+ </ li >
163+ < li > < a href ="#_9 "> 为什么需要函数式?</ a > < ul >
164+ < li > < a href ="#_10 "> 枚举的糟糕用法</ a > </ li >
165+ < li > < a href ="#_11 "> 函数式编程光荣救场</ a > </ li >
166+ < li > < a href ="#c20-auto "> 我用了 C++20 的函数参数 auto 语法糖</ a > </ li >
167+ < li > < a href ="#_12 "> 函数也是对象!</ a > </ li >
168+ < li > < a href ="#c11-lambda "> C++11 引入 Lambda 语法糖</ a > </ li >
169+ < li > < a href ="#_13 "> 依赖注入原则</ a > </ li >
170+ < li > < a href ="#_14 "> 低耦合,高内聚</ a > </ li >
171+ < li > < a href ="#_15 "> 与传统面向对象的对比</ a > </ li >
172+ < li > < a href ="#_16 "> 函数对象在模板加持下静态分发</ a > </ li >
173+ < li > < a href ="#function "> 函数对象也可在 function 容器中动态分发</ a > </ li >
174+ < li > < a href ="#_17 "> 案例:函数对象的动态分发用于多线程任务队列</ a > </ li >
175+ < li > < a href ="#_18 "> 函数对象的重要机制:闭包</ a > </ li >
176+ < li > < a href ="#c "> 函数指针是 C 语言陋习,改掉</ a > </ li >
177+ </ ul >
178+ </ li >
179+ < li > < a href ="#bind "> bind 为函数对象绑定参数</ a > </ li >
180+ </ ul >
181+ </ li >
182+ </ ul >
183+ </ div >
142184< h2 id ="_2 "> 为什么需要函数?</ h2 >
143185< pre > < code class ="language-cpp "> int main() {
144186 std::vector<int> a = {1, 2, 3, 4};
@@ -928,6 +970,7 @@ <h2 id="bind">bind 为函数对象绑定参数</h2>
928970
929971 < footer class ="col-md-12 ">
930972 < hr >
973+ < p > 小彭老师倾 ♥ 制作</ p >
931974 < p > Documentation built with < a href ="https://www.mkdocs.org/ "> MkDocs</ a > .</ p >
932975 </ footer >
933976 < script src ="../js/bootstrap.bundle.min.js "> </ script >
@@ -937,6 +980,8 @@ <h2 id="bind">bind 为函数对象绑定参数</h2>
937980 </ script >
938981 < script src ="../js/base.js "> </ script >
939982 < script src ="../js/print-site.js "> </ script >
983+ < script src ="../extra.js "> </ script >
984+ < script src ="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML "> </ script >
940985 < script src ="../search/main.js "> </ script >
941986
942987 < div class ="modal " id ="mkdocs_search_modal " tabindex ="-1 " role ="dialog " aria-labelledby ="searchModalLabel " aria-hidden ="true ">
0 commit comments