欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala学习笔记:Scala语法基础

程序员文章站 2024-02-18 12:44:10
...

注意:因为使用的spark版本是2.2.0,而spark2.2.0是用scala2.11.8编译的,为避免版本问题,最好下载scala 2.11.8
下载安装就不说了,有安装包,不需要设置环境变量,直接输入scala进入shell,输入:quit退出shell。

同Python,scalashell即解释器,scala还能自动判断类型,scala中所有类型都是class。

一些简单示例:
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础

scala中var表变量,val表常量:
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础

指定变量类型

易错: scala中变量类型均已大写字母开头
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础

scala中运算符实际上是方法,只不过是被重载成了运算符。这种使用方式不常用:
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础

支持大数运算:
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础

导入库

(下划线为通配符):
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础
Scala学习笔记:Scala语法基础

字符串去重:
Scala学习笔记:Scala语法基础

在命令行模式下粘贴代码,输入:paste进入粘贴模式:
Scala学习笔记:Scala语法基础

for循环与跳出

to

Scala学习笔记:Scala语法基础

until

Scala学习笔记:Scala语法基础

break

scala中跳出循环需要借助库函数:

import scala.util.control.Breaks._
breakable{
    var n=10
    for(c<-"hello world"){
        print(c)
        n-=1
        if(n==4) break;
    }
}

嵌套循环

下面程序中,j先递增:

for(i<-(1 to 9);j<-(1 to 9)){
    if(j==9){
        println(i+"*"+j+"="+i*j)
    }
    else{
        print(i+"*"+j+"="+i*j+"\t")
    }
}

函数(块语句)

返回值与返回值类型

注意:有返回值的函数名后面必须带等号。函数名与函数体之间无等号连接的函数叫做过程,返回类型为unit。

scala中函数的最后一行即为返回值:

def fun1(n:Int):Int={
    var sum=0
    for(i<-(1 to n)){
        sum+=i
    }
    sum
}
fun1(10)

递归

递归函数必须指定返回类型:

def feb(n:Int):Int={
    if(n<=2)
        1
    else
        feb1(n-1)+feb1(n-2)
}

设置参数默认值

def sayhello(name:String="nobody"){
    print("hello "+name)
}

Scala学习笔记:Scala语法基础

变长参数

def sum(num:Int*):Int={
    var result=0
    for(i<-num){
        result+=i
    }
    result
}

Scala学习笔记:Scala语法基础

序列参数

def sum(nums:Int*):Int={
if(nums.length==0) 0
else nums.head+sum(nums.tail:_*)
}

.head方法为取序列的首元素,.tail方法为取除首元素后的序列。“_*”说明参数为序列类型。

异常处理

Scala学习笔记:Scala语法基础

非法参数异常

try {
throw new IllegalArgumentException("x should not be negative")
} catch{
case _:IllegalArgumentException => println("Illegal Argument")
} finally{
println("release resources.")
}

IO异常

Scala学习笔记:Scala语法基础

import java.io._
try{
throw new IOException("user defined Exception")
} catch{
    case e1:IllegalArgumentException => println("Illegal Argument")
    case e2:IOException => println("IO exception")
}

Scala学习笔记:Scala语法基础

数组

定长数组Array

指定类型的定长数组Array

var array=new Array[Int](10)

Scala学习笔记:Scala语法基础

array(0)=1
array

Scala学习笔记:Scala语法基础

不指定类型的定长数组Array

很好奇为什么不用new?

var arrry=Array(0,1,"a","b")

Scala学习笔记:Scala语法基础

变长数组ArrayBuffer

变长数组需要导入库:
import scala.collection.mutable.ArrayBuffer

往变长数组中添加元素

var arrbuf=new ArrayBuffer[Int]()
arrbuf+=(1,2,3,4,5)

Scala学习笔记:Scala语法基础

往变长数组中添加集合

arrbuf++=array

Scala学习笔记:Scala语法基础

删除:
Scala学习笔记:Scala语法基础

****上还讲了很多,不写了,这种语言需要用的时候再学就行了。