不管是面向过程还是面向对象。软件开发中,我们都不能脱离“函数”。
什么是函数?不同的人有不同的理解。下面我就谈谈我的理解:
y=f(x)这就是函数。x是参数,y是函数的返回结果,f是函数名。软件开发中,我们也是这样用的。如果没有x,那就是无参函数;没有f,那就是匿名函数;没有y,那就是带副作用的函数(函数式编程中,认为返回void的函数是带副作用的函数)。如果,x,f,y都没有,那就是个空函数。
面向对象中,站在对象自身的角度,一个对象拥有了函数才拥有了行为。站在总体系统的角度,一个对象的函数就是他能够提供的服务。一个没有函数的对象,往往代表某一种值,所以称为值对象,这种对象只拥有getter/setter方法。之所以没有公开属性,而是提供getter/setter方法,一个比较重要的原因是可以将对于对象属性的查询和修改权限分离。不可小看getter/setter方法,因为它代表了函数的两种基本类型:一类函数是用于改变状态的setter型函数,另一类是用于查询状态的getter型函数。一个没有属性,只有函数的对象,往往是对外提供的一些工具对象,无状态的对象只提供服务,而且不会有多线程并发问题。真是广大人民群众喜闻乐见的一种方式,可是又被面向对象的大师批判为打着面向对象的旗号干着面向过程的勾当。由此,面向对象的函数式编程,成了现在比较热的话题。很多新兴的语言也都基于此发展起来。
函数式编程将函数视为第一类对象。他们是一等公民,拥有千变万化的身份。它可以是服务,可以是参数,甚至可以是返回值。这种编程方式以去掉所有变量,去掉函数副作用为目标。为未来的多核计算,云计算做准备。
其实这些概念早在很久以前就已经存在了。但是历史就是这样螺旋上升式的发展,我们总能在最新的技术中看到历史的影子。
关于函数的话题,先胡说到这吧。回家了!!~~~~~
分享到:
相关推荐
4. 再次使用`reshape`函数将`A1`恢复为二维数组`A2G`,并显示结果以验证置乱和恢复过程。 **算法2:二维坐标置乱** 这种算法通过改变图像的二维坐标实现置乱。其核心思想是: 1. 首先读取并转换图像为灰度图像。 ...
浅谈64位进程远程hook技术: https://bbs.125.la/forum.php?mod=viewthreadtid=14666356extra= 不管您是转载还是使用请保留版权,源码在精益论坛免费发布本人未获利,请不要用于非法途径。 -------------------------...
【老生谈算法】matlab实现混沌序列图像加密程序详细解析 图像加密是信息安全领域中的重要环节,特别是在网络传输中,图像数据的保护至关重要。MATLAB作为一种强大的数值计算和科学计算软件,因其丰富的数学函数库和...
创建一个中文文件名的文件时问题就出来了,文件名都是乱 码! 查看了很多文档试了不少方法都解决不了,本来想着用别的方法绕过这个问题,忽然脑子里闪过Windows默认的文字编码是ansi,然后再 baidu了一下,证实了这...
- 使用语义化标签,避免模板内的DOM层级过深和乱嵌套,这有助于提高可读性和减少渲染时间。 - 对于`v-if`和`v-show`,通常推荐使用`v-if`来决定组件是否渲染,因为它在条件不满足时不生成DOM节点,而`v-show`只是...
2.1.4 没有分析操作难度乱调优 26 2.2 如何缩短SQL调优时间 27 2.2.1 先获取有助调优的数据库整体信息 27 2.2.2 快速获取SQL运行台前信息 27 2.2.3 快速拿到SQL关联幕后信息 28 2.3 从案例看快速SQL调优 29 ...
2.1.4 没有分析操作难度乱调优 26 2.2 如何缩短SQL调优时间 27 2.2.1 先获取有助调优的数据库整体信息 27 2.2.2 快速获取SQL运行台前信息 27 2.2.3 快速拿到SQL关联幕后信息 28 2.3 从案例看快速SQL调优 29 ...
常常躬身拾捡被乱扔于地的废纸、塑料袋,以示后生。这都会使很多的学人汗颜有加。 简言之,林锐对软件工程实践的积极思考、轻快而不失深邃的文笔及其言行,都是出色之处。 正由于此,而不仅因为是同行,我才不惭...
10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 ...