zoukankan      html  css  js  c++  java
  • 类型系统的运算法则--代码阅读神器--类型关乎复合

    最近看swift的范型和typeclass很辛苦,一点也摸不着头绪;

    所以总结了以下类型系统的运算法则,以简化类型的转化、组合、变换等规则;

    is-a has-a use-a like-a as-a extension-a assign-a like-a-default

    一、类型分类:

    1、normal type:平凡类型;

    2、interface:接口类型;

    3、generic:泛型类型;

    4、moand、typeclass:高阶类型;

    类型是类型关系的结点;是关系的出发点和落脚点;

    二、类型关系:

    类型的关系关系到类型的复合;

     1、基础关系:

    is-a:继承、对象属于类型的说明;

    has-a:组合关系;

    use-a:临时变量的使用和函数参量;

    as-a:类型转换;

    2、基础泛型关系:

    generic-a:泛型类型;

    assign-a:为泛型类型指定类型参量;

    concrete-a:具体化;

    3、抽象接口:

    like-a:抽象类型、接口类型与实现关系;

    defalut-a:

    imp-default-a:

    like-a-defalut:为抽象类实现缺省功能,在swfit语言中有这种功能;

    imp-a;实现;

    4、映射关系:

    to-a:

    map-a:函数式编程的类型映射

    //下面的关系可能不考虑在列 

    5、typeclass:

    moand-a:like-a与generic-a的合体;函数式编程和随意多态中用到;

    6、给类型添加功能:

    extension-a:在类型上添加功能;

     目的是在理清类型关系的时候能够有法则和依据。

    三、编程只是关乎类型、操作和复合的游戏

     范型是has-ause-a的类型游戏;

    typeClass是is-a + has-a的游戏

    is a has a like a user a

    is-a has-a use-a like-a as-a extension-a assign-a like-a-default

  • 相关阅读:
    struts的ognl.NoConversionPossible错误
    hibernate many-to-one
    向网页中插入百度地图
    hibernate多对一单向配置
    PHP+MySQL按时间段查询记录代码
    iis无法启动的解决办法-卸掉KB939373补丁
    跳转回上一页代码
    QQ在线客服代码
    SSH(Struts2 + Hibernate + Spring)嵌入 KindEditor(KE)
    php从数据库选取记录形成列表(首页调用)
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10981317.html
Copyright © 2011-2022 走看看