Scala实践3】的更多相关文章

1.Scala的future 创建future import scala.concurrent._ import ExecutionContext.Implicits.global object FutureTest { val f:Future[String]=Future{"Hello World!"} } 提供异步 Java中的Future并不是全异步的,当需要Future里的值的时候,只能用get去获取它,亦或者不断访问Future的状态,若完成再去取值, 但其意义上便不是真正…
1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. Scala将查找这些参数的位置分为两类: Scala将首先查找隐式定义和隐式参数,这些参数可以在调用隐式参数块的方法时直接访问(无前缀). 然后,它查找与隐式候选类型关联的所有伴随对象中隐式标记的成员. abstract class Monoid[A] { def add(x: A, y: A): A…
1.内部类和抽象类型成员作为对象成员 内部类 在Scala中,可以让类将其他类作为成员.这些内部类是封闭类的成员.在Scala中,这样的内部类绑定到外部对象.假设希望编译器在编译时阻止我们混合哪些节点属于哪个图.路径相关类型提供了解决方案. 为了说明差异,绘制了图数据类型的实现: class Graph { class Node { var connectedNodes: List[Node] = Nil def connectTo(node: Node) { if (connectedNode…
1.1泛型类 泛型类是将类型作为参数的类.它们对集合类特别有用. 定义泛类型:泛型类将类型作为方括号内的参数[].一种惯例是使用字母A作为类型参数标识符,但是可以使用任何参数名称. class Stack[A] { private var elements: List[A] = Nil def push(x: A) { elements = x :: elements } def peek: A = elements.head def pop(): A = { val currentTop =…
1.模式匹配 模式匹配是一种根据模式检查值的机制.它是switch(Java中语句)的更强大版本,它同样可以用来代替一系列if / else语句. 句法 匹配表达式具有值,match关键字和至少一个case子句. import scala.util.Random val x: Int = Random.nextInt(10) x match { case 0 => "zero" case 1 => "one" case 2 => "two…
1.特征 Traits用于在类之间共享接口和字段.它们类似于Java 8的接口.类和对象可以扩展特征,但是特征不能被实例化,因此没有参数. 定义一个特征 最小特征只是关键字trait和标识符: trait Color 特征作为泛型类型和抽象方法特别有用. trait Iterator[A] { def hasNext: Boolean def next(): A } 扩展(与Java中的实现类似)trait Iterator[A]需要一个类型A和方法实现hasNext和next. 使用特征 使用…
1  if表达式 Scala中if...else..表达式是有返回值的,如果if和else返回值类型不一样,则返回Any类型. scala> val a3=10 a3: Int = 10 scala> val a4= | if(a3>20){ | "a3大于a4" | }else{ | "a4大于a3" | } a4: String = a4大于a3 scala> val a5= | if(a3>20)"a3大于20"…
1.1继承类 使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. class Person { var name = "zhangsan" } class Employee extends Person{ var salary = 0.0 def description = "员工姓名:" + name + " 薪水:" + salary } 1.2重写方法 重写一个非抽象方法需要override修饰符,调…
一.类 1.1简单类和无参方法 类的定义通过class关键字实现 scala> class Dog { | private var leg = 4 | def shout(content: String) { | println(content) | } | def currentLeg = leg | } defined class Dog scala> val dog = new Dog dog: Dog = Dog@1d66664f scala> dog shout "汪…
一.Scala的层级 1.1类层级 Scala中,Any是所其他类的超类,在底端定义了一些有趣的类NULL和Nothing,是所有其他类的子类. 根类Any有两个子类:AnyVal和AnyRef.其中AnyVal是Scala里每个内建值类的父类 scala> new Int <console>:12: error: class Int is abstract; cannot be instantiated new Int 1.2底层类型 在Scala类层级中,可看到scala.Null和…