fun函数

Kotlin 四 接口

半腔热情 提交于 2019-11-26 20:02:21
一 接口 Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现: interface MyInterface { fun bar() // 未实现 fun foo() { //已实现 // 可选的方法体 println("foo") } }   实现接口 一个类或者对象可以实现一个或多个接口。 class Child : MyInterface { override fun bar() { // 方法体 } }    接口中的属性 接口中的属性只能是抽象的,不允许初始化值,接口不会保存属性值,实现接口时,必须重写属性:   interface MyInterface{ var name:String //name 属性, 抽象的 } class MyImpl:MyInterface{ override var name: String = "runoob" //重写属性 }   函数重写 实现多个接口时,可能会遇到同一方法继承多个实现的问题。例如:   interface A { fun foo() { print("A") } // 已实现 fun bar() // 未实现,没有方法体,是抽象的 } interface B { fun foo() { print("B") } // 已实现 fun bar() { print(

c函数指针【转】

久未见 提交于 2019-11-26 18:32:46
原文:http://www.cnblogs.com/wangkangluo1/archive/2011/07/19/2110661.html 函数名与函数指针 一 通常的函数调用 一个通常的函数调用的例子: //自行包含头文件 void MyFun(int x); //此处的申明也可写成:void MyFun( int ); int main(int argc, char* argv[]) { MyFun(10); //这里是调用MyFun(10);函数 return 0; } void MyFun(int x) //这里定义一个MyFun函数 { printf(“%d\n”,x); } 这个MyFun函数是一个无返回值的函数,它并不完成什么事情。这种调用函数的格式你应该是很熟悉的吧!看主函数中调用MyFun函数的书写格式: MyFun(10); 我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道MyFun函数名代表的是一个功能(或是说一段代码)。 直到—— 学习到函数指针概念时。我才不得不在思考:函数名到底又是什么东西呢? (不要以为这是没有什么意义的事噢!呵呵,继续往下看你就知道了。) 二 函数指针变量的申明 就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样

C++虚函数详解

和自甴很熟 提交于 2019-11-26 18:31:30
摘自: http://zhidao.baidu.com/question/32424351.html 虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。 下面是对C++的虚函数这玩意儿的理解。 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始) 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。下面来看一段简单的代码 class A{ public : void print(){ cout<<”This is A”<< endl;} }; class B: public A{ public : void print(){ cout<<”This is B”<< endl;} }; int main(){ // 为了在以后便于区分,我这段main()代码叫做main1 A a; B b; a.print(); b.print(); } 通过class A和class B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略,输出的结果也是我们预料中的,分别是This is A和This is B

2019年8月9日星期五(系统编程)

家住魔仙堡 提交于 2019-11-26 17:15:53
2019 年 8 月 9 日星期五 一 . linux 多进程编程 - 通信方式。 1. 为什么进程之间要进行数据通信? 例子: ./test -> 开启一个名字为 test的进程。 ./project -> 开启一个名字为 project的进程。 通过学习通信方式,使得不同进程之间进行数据交换,例如 test进程发送数据给 project进程,从而控制 project进程运行状态。 2. 在 linux 下,通信方式有哪些?各自有什么特点? 以下几种方式属于系统编程的通信方式,只能同一台主机内部进程通信,不能跨主机。 1 )管道通信 管道通信分为有名管道与无名管道通信,管道也是 linux的一种特殊文件,进程可以写入数据到管道中,从而实现通信。 2 )信号 在 linux下,有非常多信号,例如暂停,继续,停止 ...,某一个进程通过发送信号给另外一个进程,从进行通信。 3 )消息队列 消息队列可以读取另外一个进程发送来的数据,而且可以读取特定的数据。 4 )共享内存 多个进程同时访问同一片内存空间。 能够跨主机通信的,只有网络编程才能实现 。 1 )套接字编程 可以实现不同的主机之间的通信。 二 . 进程之间通信 - 无名管道 1. 什么是无名管道?作用机制如何? 无名管道只能作用于亲缘关系的进程,例如父子进程。无名管道其实是数组来的,里面有读端与写端,进程只需要将数据写入

装饰器

空扰寡人 提交于 2019-11-26 17:11:53
1.*args与**kwargs 1,* 的意义 def fun(a,b,c): ... print a,b,c l = [1,2,3] >>>fun(*l) 它拆开*后面的数列l的数值作为位置参数,并把这些位置参数传给函数’fun’来调用。 注意:l与对应的fun函数中的参数个数对应。 2,*args 的意义 def fun(*args): ... print args >>>fun() #这个函数中可以带任意个参数。 在这里,”args”是个元组。调用函数打印”args”时,他会打印元组中包含的所有数值。 def fun(a,*args): ... print args >>>fun() #这个函数中也可以带任意个参数。 3,** 的意义 使用”**”调用函数,这种方式我们需要一个字典. 注意:在函数调用中使用”*”,我们需要元组;在函数调用中使用”**”,我们需要字典。 def fun(a, b, c): ... print a, b, c >>> d={'b':5, 'c':7} >>> fun(1, **d) 1 5 7 4,**kwargs的意义 用”**kwargs”定义函数,kwargs接收除常规参数列表职位的键值参数字典。在这里’kwargs’是个字典。所以字典就需要对应关系,比如fun里没C你传个C进去就没有用。 def fun(a, **kwargs): ..

分治法的概念以及应用

99封情书 提交于 2019-11-26 12:08:12
分治法:“分久必合,合久必分” 哈哈,其实分治法应该理解为分而治之的方法,它的基本思想是把一个大的问题比较复杂的问题,拆分成多个规模较小的子问题,然后解决这些子问题的难度就比原来大的问题简单的多。但是这个拆分是要注意如何去拆分按什么思路去拆分因为拆分出来的这种子问题要求和原来的问题是同样的结构的问题(也可以说是相同的问题),只是复杂度小一些规模小一些,拆分出来的子问题又可以用同样的方式进一步的拆分。那么既然如此我们解决这个问题时候所采用的函数是不是能够用同样的函数去解决问题呢?答案是肯定的。所以再分治法中往往要用到递归的技术来解决问题。递归技术在下文单独篇。以上就是我对分治法基本思想的理解。 所以分治法它会先做分解,分解之后它会把一系列小的问题给它解决掉,然后再把小的问题进行相应的汇合,一步一步整合合并,合并之后得到最终的原来的初始问题的解决方案。就是按这种思路来解决问题,要利用到分治法来解决问题往往要对这个问题本身有一定的要求,首先这个问题它的规模缩小到一定的程度要能够容易的解决,否则就失去了拆分它的意义。其次这个问题必须要能够分解成若干个规模较小的相同问题,如果分出来的是不同问题那也不行。最后要能够利用到这个问题,分解出来的子问题的解能够合并为原来问题的解。同时各个子问题要求是相互独立的,不相互独立也不行。这就是分治法的基本思想以及对分治法应用的基本要求。 递归技术

Android 开发中的架构模式 -- MVC / MVP / MVVM

本秂侑毒 提交于 2019-11-26 11:27:22
【 这是 ZY 第 15 篇原创技术文章 】 预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 阅读前准备工作 clone CommonTec 项目,其中 architecture 模块是本文架构模式的对应的示例代码 文章概览 一、什么是架构 关于架构的定义,其实在很多书籍和文章中都是不同的,很难做一个统一。这里列举两个定义: 在维基百科里是这样定义的: 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。 在 IEEE 软件工程标准词汇中是这样定义的: 架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。 关于更多的定义,推荐阅读《软件架构设计:程序员向架构师转型必备》第二章 ... 在看过茫茫多的架构定义以后,我理解的架构是这样的: 为了解决 特定的问题 而提出 按照 特定的原则 将系统整体进行模块/组件/角色的划分 建立模块/组件/角色间的 沟通机制 具体解释一下,首先是要有特定的问题,没有问题空谈架构,仿佛是空中楼阁,没有实用价值,而对应到不同的问题,会有不同的解决方式。