什么是纯函数?

纯函数是指在相同的输入条件下,总是返回相同的输出值,并且没有任何副作用的函数。 副作用指的是对函数外部环境造成的任何改变,比如修改全局变量、修改传入的参数等。

在函数式编程中,纯函数具有以下重要性:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=e5feaa27ec3349838757ebc84729835a

可缓存性:由于纯函数的输出只依赖于输入,因此可以缓存函数的结果,避免重复计算,提高性能。
可测试性:纯函数的输入输出关系明确,易于编写单元测试,验证函数的正确性。
可组合性:纯函数可以无限组合,因为它们之间不存在依赖关系和副作用,这使得代码更加模块化、可维护和可重用。
可并行性:由于纯函数没有共享状态,可以并行执行多个纯函数,提高程序的并发性能。
可靠性:纯函数不会对外部环境产生影响,因此不会引起意外的行为变化或错误。
全部评论

相关推荐

#腾讯# 流程挺快的,挂的也挺快😭😭😭4.8晚上被捞,约一面时间4.9晚上一面,可以看我前面写的一面面经,本来已经凉凉的,没想到居然过了4.10下午,收到二面邀请通知,约明天早上4.11早上二面,可能有三道题回答的不好4.12中午,一觉睡醒就赶紧打开官网,已经变灰了😭😭😭二面可能有三道题,回答的不是很好:1.假如TCP真的只有两次握手,会怎样?我回答,“无法验证客户端发送能力,服务端不知道客户端有无发送能力”,但是面试官说不对,然后问什么,假如真的二次就我握手了,好像握手成功了还是啥之类的,我就不会了,也有可能我没理解好面试官的问题,反正最后乱答了一个“可能第三次握手,携带的信息会丢失”,我同学说,要回答出关键词“历史连接”2.类加载器问题:同一个Java程序里面,能不能出现两个ClassA?这个我还真没尝试过,知识盲区,所以我就说,“我猜应该不行吧,如果存在两个同名的类,那加载A对象时,编译器哪知道这个A对象要找哪个类加载?但假如真的可以,肯定有一些机制让编译器可以定位到具体的类,类似IOC的Qualifier注解这种”这个是真的知识盲区,硬核题,最后面试官说,其实是可以的(我没试过,但是我也挺震惊的,翘了那么久的Java代码,现在才知道,居然可以存在两个同名的类)。我已经开始啃ClassLoader源码了,把这个啃下来就懂了。和一面的hashmap、线程池源码一起啃!3.一道开放题:假如我把APP拖进中转站,数据库就新增一道记录,同时之前的记录也会刷新一次。然后我加着加着,发现第40条或者第50条记录新增的时候,就特别卡,后面也会卡,但就是第40或第50特别卡,这是为什么?我回答,内存回收、CPU繁忙、网络拥塞,面试官说,不可能每次正巧第40条就回收吧,我回答,可能存在分页机制,第39到第40的时候,正好创建新的一页了,面试官说不对。最后答案是:记录越来越多,IO繁忙,对就这么简单,单纯就是记录越多自然就越卡,是不是很懵逼?我也问面试官,那为什么您说刚刚好第40或第50特别卡?面试官说,这是烟雾弹唉,就这三道题吧,回答的不好,其他什么HashMap、双亲委派、http、树的结构,还有几道题忘记了,反正回答的好的题目,就不记得了哈哈哈。面试官挺和蔼可亲的,全程笑眯眯。不管了就这样吧,反正26届,当做一次锻炼吧
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务