scala的type alias特性

今天通过崔鹏飞的博客,地址http://cuipengfei.me,我学到了type alias的使用方法,借助于这个特性,可以给予它来实现好多封装。

比如说:

    type Fly = ()=>Unit

    def doFly(fly:Fly): Unit ={
      fly()
    }
    val birdFly = ()=>{
      println("我是一只鸟")
    }
    val pigFly = ()=>{
      println("我是一只猪,我在风口上")
    }

    doFly(birdFly)
    doFly(pigFly)

对于doFly方法来说,Fly可以等同的当作是一个java的接口,只要满足()=>Unit的 函数,都可以当成是一个子类。而且减少了很多接口和类的数量。

时间: 2024-10-10 02:27:05

scala的type alias特性的相关文章

scala类型系统 type关键字

和c里的type有点像. scala里的类型,除了在定义class,trait,object时会产生类型,还可以通过type关键字来声明类型. type相当于声明一个类型别名: scala> type S = String defined type alias S http://hongjiang.info/scala-type-system-type-keyword/

Could not resolve type alias 'map '. Cause: java.lang.ClassNotFoundException: Cannot find class: map

把resultType改为resultMap, 把parameterType改为parameterMap,重新发布并运行. Could not resolve type alias 'map '. Cause: java.lang.ClassNotFoundException: Cannot find class: map

scala的Type与Class实战详解

学习了scala的Type与Class实战详解,在运行时是通过反射来得到的.但是scala不同. scala.reflect.runtime.universe._ type 类和type比较,type比class更具体.任何数据都有type.但是class是一种数据结构,或数据 结构的抽象. 更宏观.但type更具体. 打印类的type就是包名加类名,但是class打印时在前面得加class object的getClass是class 包名加类名加$.所以object是有具体的类的 object

TypeScript: type alias 与 interface

官方文档中有关于两者对比的信息,隐藏在 TypeScript Handbook 中,见 Interfaces vs. Type Aliases 部分. 但因为这一部分很久没更新了,所以其中描述的内容不一定全对. 比如, 区别点之一:Type Alias 不会创建新的类型,体现在错误信息上. One difference is, that interfaces create a new name that is used everywhere. Type aliases don't create

每天学一点Scala之type

关键字type有两三种特性吧,用的最多的特性就是 给类型起一个别名:如下例子所示:

大数据学习之Scala语言的高级特性42

1.什么是泛型类 和Java或者C++一样,类和特质可以带类型参数.在Scala中,使用方括号来定义类型参数 测试程序: 2.什么是泛型函数 函数和方法也可以带类型参数.和泛型类一样,我们需要把类型参数放在方法名之后. 注意:这里的ClassTag是必须的,表示运行时的一些信息,比如类型. 3.Upper Bounds 与 Lower Bounds 类型的上界和下界,是用来定义类型变量的范围.它们的含义如下: l S <: T 这是类型上界的定义.也就是S必须是类型T的子类(或本身,自己也可以认

[翻译]The Neophyte&#39;s Guide to Scala Part 12: Type Classes

The Neophyte's Guide to Scala Part 12: Type Classes 过去的两周我们讨论了一些使我们保持DRY和灵活性的函数式编程技术,特别是函数组合,partial function的应用,以及currying.接下来,我将会继续讨论如何使你的代码尽可能的灵活. 但是,这次我们将不会讨论怎么使用函数作为一等对象来达到这个目的,而是使用类型系统,这次它不是阻碍着我们,而是使得我们的代码更灵活:你将会学到关于 type classes 的知识. 你可能会觉得这是一

Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/pR_4sY0cJLs/优酷:http://v.youku.com/v_show/id_

scala学习笔记-类型参数(17)

类型参数是什么? 类型参数其实就类似于Java中的泛型.先说说Java中的泛型是什么,比如我们有List a = new ArrayList(),接着a.add(1),没问题,a.add("2"),然后我们a.get(1) == 2,对不对?肯定不对了,a.get(1)获取的其实是个String--"2",String--"2"怎么可能与一个Integer类型的2相等呢? 所以Java中提出了泛型的概念,其实也就是类型参数的概念,此时可以用泛型创