随笔分类 -  泛型编程

摘要:泛型编程:以参量化的不确定类型为中心的编程;类型参量化; 泛型编程的部分是结构:类型构造器的结构、泛函的结构; 泛型编程从抽象的角度看(共同性): 是提取与类型无关的算法和数据组织形式; 从可变性(扩展性)(个性化)看: 有些语言需要并支持了泛型结构在某些类型上的扩展swift; 从类型角度看: 在 阅读全文
posted @ 2019-03-15 16:32 zzfx 阅读(403) 评论(0) 推荐(0) 编辑
摘要:类型约束的本质是:类型构造器在约束类型的基础上构造新的类型 阅读全文
posted @ 2019-03-14 17:21 zzfx 阅读(122) 评论(0) 推荐(0) 编辑
摘要:类型约束的描述,属于声明式编程的一支; 基于类型约束的编程: 1、基于约束的类型声明: 只有符合约束的类型才能进行赋值; 2、基于类型约束的函数构造; 这里主要指新函数的构造; 函数是一种特殊的类型,是绑定在数据类型上的类型; 只有符合类型约束的构造类型的实例(符合类型),才能访问这些函数类型; 3 阅读全文
posted @ 2019-03-14 15:56 zzfx 阅读(186) 评论(0) 推荐(0) 编辑
摘要:泛型编程不仅能泛化算法中涉及的概念(数据类型),还能泛化行为(函数、方法、运算)。 基础部分: 与类型无关的变量和函数,通用部分; 扩展部分(swift): 与类型相关的函数其它扩展; 泛型关注通用的算法和数据组织形式; 关注与类型无关的算法和数据组织形式; 偏重数据的泛型(强泛型成员变量)关注数据 阅读全文
posted @ 2019-03-11 16:56 zzfx 阅读(330) 评论(0) 推荐(0) 编辑
摘要:类型推断的前提是有待定类型和上下文。 1、由定义推断实现的类型; 2、由赋值推断声明的类型; 3、由实现推断泛型的类型; Type inference refers to the automatic detection of the data type of an expression in a p 阅读全文
posted @ 2019-03-10 21:57 zzfx 阅读(456) 评论(0) 推荐(0) 编辑
摘要:什么是Monad? trait Monad[+T] { def flatMap[U]( f : (T) => Monad[U] ) : Monad[U] def unit(value : B) : Monad[B] } Monads 就是一个values的容器,并且这个“容器”必须有一个flatMa 阅读全文
posted @ 2019-01-23 18:27 zzfx 阅读(454) 评论(0) 推荐(0) 编辑
摘要:Java泛型中的协变和逆变 一般我们看Java泛型好像是不支持协变或逆变的,比如前面提到的List<Object>和List<String>之间是不可变的。但当我们在Java泛型中引入通配符这个概念的时候,Java 其实是支持协变和逆变的。 看下面几行代码: 可见在Java泛型中通过extends关 阅读全文
posted @ 2018-10-09 14:39 zzfx 阅读(194) 评论(0) 推荐(0) 编辑
摘要:泛型的定义:泛型是JDK 1.5的一项新特性,它的本质是参数化类型 ParameterizedType,即带有类型参数的类型。 类型参数。 https://www.cnblogs.com/baiqiantao/p/7475696.html 泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言 阅读全文
posted @ 2018-10-08 22:23 zzfx 阅读(246) 评论(0) 推荐(0) 编辑
摘要:Here’s a generic version of the same code: struct Stack<Element> { var items = [Element]() mutating func push(_ item: Element) { items.append(item) } 阅读全文
posted @ 2018-10-08 22:07 zzfx 阅读(352) 评论(0) 推荐(0) 编辑
摘要:Type inference refers to the automatic detection of the data type of an expression in a programming language. Type inference is the ability to automat 阅读全文
posted @ 2018-06-07 16:12 zzfx 阅读(138) 评论(0) 推荐(0) 编辑
摘要:与面向对象中的接口类或抽象类中定义的函数组类似; 函数的具体执行依赖与函数医用的类型。 In programming languages, ad-hoc polymorphism[1] is a kind of polymorphism in which polymorphic functions 阅读全文
posted @ 2018-06-07 15:45 zzfx 阅读(231) 评论(0) 推荐(0) 编辑
摘要:对泛型的类型添加约束,从而使泛型类型的变量具有某种通用操作。 再使用这些操作,参与到其它操作中。 In computer science, a type class is a type system construct that supports ad hoc polymorphism. This 阅读全文
posted @ 2018-06-07 15:21 zzfx 阅读(196) 评论(0) 推荐(0) 编辑
摘要:类型约束 相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束。 类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的。 回到前一篇例子中的泛型方法,这个泛型方法就要求可指定的类型实参必须实现了 阅读全文
posted @ 2018-06-07 14:46 zzfx 阅读(534) 评论(0) 推荐(0) 编辑
摘要:C++泛型 C++泛型跟虚函数的运行时多态机制不同,泛型支持的静态多态,当类型信息可得的时候,利用编译期多态能够获得最大的效率和灵活性。当具体的类型信息不可得,就必须诉诸运行期多态了,即虚函数支持的动态多态。 对于C++泛型,每个实际类型都已被指明的泛型都会有独立的编码产生,也就是说list<int 阅读全文
posted @ 2018-06-07 11:31 zzfx 阅读(399) 评论(0) 推荐(0) 编辑
摘要:类型与变量中的类型。只要有变量就可能有泛型的存在。 泛型是在确定类型的结构和函数基础上进行的二次抽象。目的是达到高代码可用。 是针对结构和函数中的类型进行的二次抽象。 算法和结构中的类型(可变)待定。 泛型:泛指类型、待定类型、不确定类型。与变量密切相关。 泛型,即“参数化类型”。--参数:自变量 阅读全文
posted @ 2018-05-29 14:49 zzfx 阅读(282) 评论(0) 推荐(0) 编辑
摘要:Typealias Typealias typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰。使用的语法也很简单,使用typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字。比如在计算二维平面上的距离和位置的时候,我们一般使用 阅读全文
posted @ 2018-05-28 22:43 zzfx 阅读(3992) 评论(0) 推荐(0) 编辑
摘要:分为两步: 1、用类型指定构造类型; 2、构造变量进行赋值; 阅读全文
posted @ 2018-04-25 19:30 zzfx 阅读(134) 评论(0) 推荐(0) 编辑
摘要:Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantia 阅读全文
posted @ 2018-01-12 17:05 zzfx 阅读(238) 评论(0) 推荐(0) 编辑