Skip to content

Latest commit

 

History

History
33 lines (31 loc) · 932 Bytes

Q7.md

File metadata and controls

33 lines (31 loc) · 932 Bytes

Q7: What is functional programming ?

函数式编程的准则:不依赖于外部的数据,而且也不改变外部数据的值,而是返回一个新的值给你
eg:
非函数式

int cnt;
void increment(){
    cnt++;
}

函数式

int increment(int cnt){
    return cnt+1;
}

函数式编程的理念:把函数当成变量来用,关注于描述问题而不是怎么实现,这样可以让代码更易读。
我们可以看到下面那个例子inc()函数返回了另一个函数incx(),于是我们可以用inc()函数来构造各种版本的inc函数,比如:inc2()和inc5()。这个技术其实就是上面所说的Currying技术。
eg:

def inc(x):
    def incx(y):
        return x+y
    return incx
 
inc2 = inc(2)
inc5 = inc(5)
 
print inc2(5) # 输出 7
print inc5(5) # 输出 10

Reference