1. val和var的区别 val定义的是一个常量,无法改变其内容 scala> val s = 0 s: Int = 0 scala> s = 2 <console>:12: error: reassignment to val s = 2 ^ 如果要声明其值可变的变量,可以使用var scala> var s = 0 s: Int = 0 scala> s = 5 s: Int = 5 在scala中建议使用val,除非你真的想改变他的内容. 2. 基本类型 Byt…
协变 案例一: class Animal {} class Bird extends Animal {} class Animal {} class Bird extends Animal {} //协变 class Covariant[T](t:T){} val cov = new Covariant[Bird](new Bird) val cov2:Covariant[Animal] = cov c不能赋值给c2,因为Covariant定义成不变类型. 稍微改一下: class Animal…
1 变量和函数 变量: Scala 有两种变量, val 和 var. val:常量,类似于 Java 里的 final 变量.一旦初始化了, val 就不能再赋值了. va: 如同 Java 里面的非 final 变量.var在生命周期中可以被多次赋值. 下面是一个 val 的定义: eg: val x:T val x:T=e var x:T var x:T=e 函数:定义 def 2 结构控制语句 判断语句 if: if(A) B else C eg: def min(x:Int,y:Int…
1. scala初识 spark由scala编写,要解析scala,首先要对scala有基本的了解. 1.1 class vs object A class is a blueprint for objects. Once you define a class, you can create objects from the class blueprint with the keyword new. import java.io._ class Point(val xc: Int, val yc…
val list=List(1,2,3,4) list.reduce((x:Int,y:Int)=>x+y)--->list.reduceLeft((x:Int,y:Int)=>x+y) var first = true var acc:Int = 0 op=(x:Int,y:Int)=>x+y for循环第一次循环:acc=1 first = false第二次循环:acc=op(1,2)=1+2=3第三次循环:acc=op(3,3)=3+3=6第四次循环:acc=op(6,4)=…