14、Scala类型参数】的更多相关文章

转自:http://fineqtbull.iteye.com/blog/477994#bc2364938 有位je上的同学来短信向我问起了Scala类型参数中协变.逆变.类型上界和类型下界的使用方法和原理,自己虽然也刚学不久,在主要调查了<Programing in Scala>的19章后,试着在下面做一个总结.如有错误之处还请各位指正. 先说说协变和逆变(实际上还有非变).协变和逆变主要是用来解决参数化类型的泛化问题.由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数是继承关系…
1.泛型类 2.泛型函数 3.上边界Bounds 4.下边界Bounds 5.View Bounds 6.Context Bounds 7.Manifest Context Bounds 8.协变和逆变 1.泛型类 泛型类,是在类的声明中,定义一些泛型类型,然后在类内部,比如field或者method,就可以使用这些泛型类型. 使用泛型类,通常是需要对类中的某些成员,进行统一的类型限制,这样可以保证程序更好的健壮性和稳定性. 如果不使用泛型进行限制,在后期程序运行过程中,可能传入不希望的类型,导…
一.类型参数1 1.介绍 类型参数是什么?类型参数其实就类似于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中提出了泛型的概念,其实也就是类型参数…
14.1 基本介绍 -Scala饰运行在Java虚拟机(Java Virtual Machine)之上,因此具有如下特点 1) 轻松实现和丰富的Java类库互联互通 2) 它既支持面向对象的编程方式,又支持函数式编程 3) 它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言 14.2 Scala提倡函数式编程(递归思想) -先说下编程范式: 1) 在所有的编程范式中,面向对象编程(Object-Oriented Programming)无意是最大赢家 2) 但其实面向对象编程并不…
介绍 类型参数是什么?类型参数其实就类似于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中提出了泛型的概念,其实也就是类型参数的概念,此时可以用泛…
1.Scala的类和方法.函数都可以是泛型 2.上界:表示泛型的类型必须是某种类型或者其类型的子类,语法:<: ,对类型进行限定 3.下界:表示泛型的类型必须是某种类型或者其类型的父类,语法:>: 4.View Bounds,可以进行隐式转换,将其转换成目标类型,是上边界和下边界的加强版, 语法 T <% U,T必须是U的类型,但是又没有直接继承自U,所以要通过隐式转换操作 5.T:ClassTag,一种类型转换,编译的时候类型不够,需要通过JVM的runtime来通过运行时的获取信息…
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…
转载自  fineqtbull   http://fineqtbull.iteye.com/blog/477994 有位je上的同学来短信向我问起了Scala类型参数中协变.逆变.类型上界和类型下界的使用方法和原理,自己虽然也刚学不久,在主要调查了<Programing in Scala>的19章后,试着在下面做一个总结.如有错误之处还请各位指正. 先说说协变和逆变(实际上还有非变).协变和逆变主要是用来解决参数化类型的泛化问题.由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数…
1. 使用Scala(构建这样一个应用,它会取回一份列表,其中包括用户持有的股票的代码以及股份,并告知他们在当前日期为止的这些投资的总价.这包含了几件事:获取用户输入.读文件.解析数据.写文件.从Web获取数据.把信息显示给用户.) 2. 与Java互操作 3. Scala并发编程 4. scala的一些特殊用法 5. 把Scala代码当作脚本运行 6. scala编程第15章 7. scala编程第16章学习笔记(1) 8. scala编程第16章学习笔记(2) 9. scala编程第16章学…
作为函数的参数 一个匿名的函数传递给一个方法或者函数的时候,scala会尽量推断出参数类型.例如一个完整的匿名函数作为参数可以写为 scala> def compute(f: (Double)=>Double) = f(3) compute: (f: Double => Double)Double //传递一个匿名函数作为compute的参数 scala> compute((x: Double) => 2 * x) res1: Double = 6.0 如果参数x在=>…