Scala基本语法初探
学习Spark不得不学习Scala这门神奇的语言,这次就匆匆忙忙做下总结吧。
Scala是一种基于JVM的语言,是函数是编程和面向对象编程的结合,是一个静态语言,纯静态语言。因为会生成和java相同的class字节码所以它与Java之间可以互相调用。
Scala有一个解释器。
1.定义常量的方法,在这里常量的方法是不能够改变的
val gender="male"
2.定义变量的方法
var lession="chinaHadoop"
3.定义函数的方法,函数的最后一个值被默认为返回值
main函数要定义在object里面
def hello(name:String="Spark"):String={
"Hello :"+name;
}
我们可以这样调用
println(hello("one")) 打印:Hello :one
我们也可以使用它的默认参数,也就是我们在不传参的情况下这里会默认给你分配一个参数、
println(hello()) 打印:Hello :Spark
我们可以定义这样定义一个函数:
val add=(x:Int,y:Int)=>x+y
它是匿名函数,因为函数在Scala里面是一等公民,那么一个函数赋值给一个常量add也是见怪不怪的事情
那么他可以这样调用
add(1,2)
那么我们也可以这样来定义一个函数
def add2(x:Int)(y:Int)=x+y
它是函数的克里化,克里化在以后再说那么我们可以这样调用它
val value = add2(3)(4)
哈,好神奇的语言
4.有没有尝试过在函数的()里面条用过函数???
哈Scala让我见识到了
def printEveryChar(c:String*)={
c.foreach(x=>println(x))
}
其中参数(c:String*)是表示可以传入一系列的String类型的参数
那么我们可以这样调用
printEveryChar("one","two","three","four")
打印结果
one
two
three
four
if条件判断
val x=1
val a=if(x>0)1 else 0
那么a的值就是1,可见判断语句变得非常简洁
循环
1.while循环
var (n,r)=(10,0)
while(n>0){
r=r+n
n=n-1
println(r)
}
println(r)
for循环
for(i<- 1 to 10){
println(i)
}
for(i<- 1.to(10)){
println(i)
}
/以上打印1到10,一下打印1到9
for(j<- 1 until 10 ){
println(j)
}
另外
for(i<- e1){
for(j<- e2){
ifB{
E(i,j)
}
}
}
可以简化为
for(i<- e1;j<- e2;if B) E(i,j)
Scala之match
匹配match表达式
a match{
case e1=>E1
case e2=>E2
...
}
例如:
val tmp = 4 match {
case 1 => "one"
case 2 => "two"
case 3 => "three"
case 4 => "four"
}
println(tmp)
则输出为four