scala泛型】的更多相关文章

package com.ming.test /** * scala泛型 * 类型参数测试 */ object TypeParamsTest { //泛型函数 def getMiddle[T](a:Array[T])=a(a.length/2) //类型通配符 def process1(people:java.util.List[_<:Student])={} def main(args: Array[String]): Unit = { val p=new Pair(42,"String&…
在Scala中你可以使用类型参数来实现类和函数,这样的类和函数可以用于多种类型.比如Array[T] 你可以存放任意指定类型T的数据. 类.特质.函数都可以有类型参数:将类型参数放在名字后面用方括号括起来 一 泛型类 .1Java 实现 public class Animals<A,B> {     private A name;     private B age;     public Animals() {     }     public Animals(A name, B age)…
package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制) * 上边界:表达了泛型的类型必须是"某种类型"或某种类型的"子类",语法为“<:”, * 下边界:表达了泛型的类型必须是"某种类型"或某种类型的"父类",语法为“>:”, * * 3, "<%" :v…
17.1 泛型的基本介绍 17.1.1 基本介绍 1) 如果我们要求函数的参数可以接受任意类型,可以使用泛型,这个类型可以代表任意的数据类型 2) 例如List,在创建List时,可以传入整型.字符串.浮点数等等任意类型.那是因为List在类定义时引用了泛型.比如在Java中:public interface List<E> extends Collection<E> 17.1.2 泛型的应用案例1 -要求 1) 编写一个Message类 2) 可以构建Int类型的Message,…
今天知识星球球友,微信问浪尖了一个spark源码阅读中的类型限定问题.这个在spark源码很多处出现,所以今天浪尖就整理一下scala类型限定的内容.希望对大家有帮助. scala类型参数要点 1. 非变 trait Queue[T] {}?这是非变情况.这种情况下,当类型S是类型A的子类型,则Queue[S]不可认为是Queue[A]的子类型或父类型,这种情况是和Java一样的.?2. 协变trait Queue[+T] {}?这是协变情况.这种情况下,当类型S是类型A的子类型,则Queue[…
Scala进阶之路-Scala中的泛型介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 通俗的讲,比如需要定义一个函数,函数的参数可以接受任意类型.我们不可能一一列举所有的参数类型重载函数.那么程序引入了一个称之为泛型的东西,这个类型可以代表任意的数据类型.说白了泛型就是对数据类型的约束,例如 List,在创建 List 时,可以传入整形.字符串.浮点数等等任意类型.那是因为 List 在类定义时引用了泛型. 一.Scala中的泛型 /* @author :yinzheng…
本节主要内容 泛型(Generic Type)简单介绍 注解(Annotation)简单介绍 注解经常使用场景 1. 泛型(Generic Type)简单介绍 泛型用于指定方法或类能够接受随意类型參数,參数在实际使用时才被确定,泛型能够有效地增强程序的适用性,使用泛型能够使得类或方法具有更强的通用性.泛型的典型应用场景是集合及集合中的方法參数,能够说同java一样,scala中泛型无处不在,详细能够查看scala的api 1 泛型类 //单个泛型參数的使用情况 class Person[T](v…
1. scala泛型浅析 package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制) * 上边界:表达了泛型的类型必须是"某种类型"或某种类型的"子类",语法为"<:", * 下边界:表达了泛型的类型必须是"某种类型"或某种类型的"父类",语法为">:&q…
1 泛型 1)如果我们要求函数的参数可以接受任意类型.可以使用泛型,这个类型可以代表任意的数据类型. 2)例如 List,在创建 List 时,可以传入整型.字符串.浮点数等等任意类型.那是因为 List 在 类定义时引用了泛型.比如在Java中:public interface List<E> extends Collection<E> Scala泛型应用案例1 1)编写一个Message类 2)可以构建Int类型的Message,String类型的Message. 3)要求使用…
Scala进阶之路-Scala中的Ordered--Ordering 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   说道对象的比较,在Java中大家最熟悉不过的就是实现类本身实现Comparable接口或者是调用者自己实现Comparator接口均可以实现对象之间的比较.在Scala中Ordered这个特质对应的是Comparable,而Odrering这个特质对应的是Comparator.好了,废话不多说,我们直接看案例吧. 一.Java中的Comparable--Co…
继续学习,这一篇主要是通过scala来吐槽java的,同样是jvm上的语言,差距咋就这么大呢? 作为一个有.NET开发经验的程序员,当初刚接触java时,相信很多人对java语言有以下不爽(只列了极小一部分): 1. 一堆的setter/getter方法,没有c#中的property属性概念 2. 方法的参数值,不能设置缺省值 3. 不定个数参数的写法太单一 ... 然后java的拥护者讲出一堆大道理,说这样设计是如何如何有道理,各种洗脑,时间长了,也就被迫习惯了.要不是遇到scala,我还真就…
今天来了解下scala的泛型 先让我们看下这段代码 class Triple[F,S,T](val first:F,val second: S,val third: T) val triple = new Triple("Spark",3,3.1415)        val bigData = new Triple[String,String,Char]("Spark","Hadoop",'R')        def getData[T](l…
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群 DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③…
类比java中的泛型: 上界(协变).下界(逆变) scala中泛型采用中括号声明 val array = Array[Int](,,,) array() //声明什么类型就返回什么类型 //test[String]() def test[T](t: T)= { //声明什么类型就返回什么类型 } 泛型上界 test[User2](new User3) def test[T <: User2](t: T) ={ //上界 从树的结构上比它小的,也就是它的子类型 } 泛型下界 test[User1…
object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: String) { println("Hello, " + name) } val sayHelloFunc = sayHello _ sayHelloFunc("leo") //Scala定义匿名函数的语法规则: (参数名: 参数类型) => 函数体 val say…
package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制) * 上边界:表达了泛型的类型必须是"某种类型"或某种类型的"子类",语法为“<:”, * 下边界:表达了泛型的类型必须是"某种类型"或某种类型的"父类",语法为“>:”, * * 3, "<%" :v…
1. Scala中的函数 在Scala中,函数是“头等公民”,就和数字一样.可以在变量中存放函数,即:将函数作为变量的值(值函数). 2. scala中的匿名函数,即没有函数名称的函数,匿名函数常作为高阶函数的参数使用 (x: Int) => x*3 =>使用场景小结: a. 用于匿名函数中连接函数声明和函数体 b. 用于模式匹配中,连接case条件和表达式  case "+" => "This is a positive number" c. 用…
package com.yz9 import org.junit.Test import scala.collection.mutable.ListBuffer class test { @Test def test1(): Unit ={ val abc = new Abc[String,Int]("小明",20) println(abc.name) println(abc.age) } @Test def test2(): Unit ={ val list = ListBuffer…
1.Akka RPC通信案例改造和部署在多台机器上  1.1 Akka RPC通信案例的改造(主要是把一些参数不写是) Master package com._51doit.akka.rpc import akka.actor.{Actor, ActorRef, ActorSystem, Props} import com.typesafe.config.ConfigFactory import scala.concurrent.duration._ import scala.collectio…
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为Scala Macros可以直接对程序进行修改.Scala Macros的工作原理是在程序编译时按照编程人员的意旨对一段程序进行修改产生出一段新的程序.具体过程是:当编译器在对程序进行类型验证(typecheck)时如果发现Macro标记就会将这个Macro的功能实现程序(implementation…
集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快速访问任意元素.但是链表不可以. Set是一组没有先后次序的值.SortedSet中,元素排过序. Map时一组(键,值)对.SortedMap按键排序 每一个Scala集合特质或类都有一个带有apply方法的伴生对象. 13.2 可变和不可变集合 13.3 序列Sequence 不可变序列:Ind…
基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时才需要用分号隔开. 1.2 常用类型 Scala 7中数值类型:Byte, Char, Short, Int, Long, Float和Double,以及Boolean类型.跟Java不同的是,这些类型是类.可以对数值执行方法,1.toString() Scala不需要类型包装,类型之间的转换是Sc…
目录[-] 1.   Scala有多cool 1.1.     速度! 1.2.     易用的数据结构 1.3.     OOP+FP 1.4.     动态+静态 1.5.     DSL 1.6.     够复杂 1.7.     够有趣 1.8.     开发社区 2.   lang 2.1.     和Java的异同 2.1.1.  语法 2.1.2.  库 2.2.     变量 2.2.1.  保留字 2.2.2.  变量标识 2.2.3.  变量定义 2.2.3.1     va…
Effective Scala Marius Eriksen, Twitter Inc.marius@twitter.com (@marius)[translated by hongjiang(@hongjiang)] Table of Contents 序言 格式化: 空格, 命名, Imports, 花括号, 模式匹配, 注释 类型和泛型: 返回类型注解(annotation), 变型, 类型别名, 隐式转换 集合: 层级, 集合的使用, 风格, 性能, Java集合 并发: Future,…
本文对Java泛型进行了全面的总结.文章内容包括普通泛型.通配符.受限泛型.泛型接口.泛型方法.返回泛型类型实例等等. 虽然Scala创始人Martin Odersky说当年正是因为Java泛型的丑陋,所以才想到要创建一个新的语言,不过这仍然不妨碍我们学习Java泛型.毕竟即使听说Java泛型不好用,但好不好用还是得会用了才知道.下面是一些有关Java泛型的总结: 普通泛型 class Point< T>{ // 此处可以随便写标识符号,T是type的简称 private T var ; //…
Scala implicit implicit基本含义 在Scala中有一个关键字是implicit, 之前一直不知道这个货是干什么的,今天整理了一下. 我们先来看一个例子: def display(input:String):Unit = println(input) 我们可以看到,display函数的定义只是接受String类型的入参,因此调用display("any string")这样的函数是没问题的.但是如果调用display(1)这样的入参不是String类型的话,编译会出…
其实我想找一门“具有Python的简洁写法和融合Java平台的优势, 同时又足够有挑战性和灵活性”的编程语言. Scala 就是一个不错的选择. Scala 有很多语言特性, 建议先掌握基础常用的: 变量.控制结构 .正则与模式匹配.集合.文件读写/目录遍历.高阶函数.并发 Actor 模型: 然后是面向对象特性:类.Trait.泛型.注解 .操作符重载;  最后再细细学习那些复杂不常用的特性:类型转换.编译解析等:注重挖掘根源性的思想,能够推导出其它的特性. 本文使用 Scala 实现 Jav…
原文地址 本文只是带你进入 Scala 的世界,包括安装.不可变量 val.可变量 var.定义类.集合(包括列表(list).集(set).映射(map))以及集合遍历和集合库(能达到并行/并发效果). 题外话,如果 Java 争气的话,还就真不会出现像 Scala 这些语言.对于函数式编程风格的支持,尤其是对于 Lambda 表达式的支持,能减少必须要编写的逻辑无关的样板代码,让程序员集中精力任务本身.而 Java 对 Lamdba 表达式的支持到 JavaSE8 才实现(你可以查一下 Ja…
官网地址 本文内容 简介 Futures 阻塞 异常 Promises 工具 最近看了<七周七语言:理解多种编程泛型>,介绍了七种语言(四种编程范型)的主要特性:基本语法,集合,并行/并发,其中就有 Scala.你不能指望这种书全面介绍,因为其中任何一门语言都够写一本书了~ 我比较关注并行/并发,但是书中关于 Scala 的并发部分--Actor,可代码编译不通过,官网标注"Deprecated",哎,这书点不负责,示例代码也不写采用编译器的版本~ Java 8 之前,函数…