第1课 Scala语法提炼

简介:
作业1:移除一个数组中第一个负数后的所有负数
import scala.collection.mutable.ArrayBuffer

//定义过滤函数
def myfilter(param1:ArrayBuffer[Int]):ArrayBuffer[Int]={
//定义boolean变量,用于判断是否是第一个负数 
var first = true 
//便利数组
        for(element <- param1){
 //找到负数
 if(element < 0)
   {
     //判断是否是第一个
     if(first == true)
first = false 
     else
//不是第一个则从原数组中去除
param1 -= element
   }
}
param1
}
学习笔记总结:
1:可变变量声明, var int a

                             val 不可变变量声明,val int a

对于变量来说,尽可能使用不可变变量,在声明变量时可以声明类型也可以不声明类型,但是声明类型后,赋值时,只能赋值同类型或子类型的值。

        Java中存在基本类型和封装类型,但是scala中基本类型和引用类型是可以自动转换的,即基本类型也是有方法的,如1.tostring()(一切皆对象),再如,1+1 执行时是1.+(1)

        Scala中无++——操作符,但是可以用 +=-=代替,scala提供了大量的库,如scala.math._库中min()max()

        在建立对象时,scala是调用objectapply方法进行的,类似于java中的工厂方法。

        Scala中表达式是有结果或返回值的,这点与java不同,代码块的返回值是,代码块的最后一行的内容的值。

2:  循环结构:while循环

               for循环:  for(i <- 0 to 20 )   println(i)

                                    for(i<- 0 to 20 if i % 2 == 0) println(i)

       函数定义 def   f1:int = { 函数体 }   (最后一行为返回值)

在函数定义时,若是无法推断函数的返回值时,函数必须显示声明返回值。

        默认参数:def f1(param1:int, param2:String = “spark”) = param1 + param2

        变长参数:def f1(param:int*) = {},主要是在int后面加上*号

        range转换为函数参数:1 to 100 : _*  range中的所有元素提取出来。

        过程即是没有返回值的函数。

        Lazy变量:只有在第一次调用时才执行的变量,一般用于耗时的操作中,如文件的读取。

        异常处理:try{

}catch{

}finally{

}

catch代码块中用于捕获异常,finally始终执行,用于一些类似于关闭文件的操作。

3:scala中的ArrayMapTuple

Array可以先声明后赋值,亦可以直接赋值。例如

        Val array = Array[Int](5)

               array(1) = 2

        val array = Array (1, 2, 3, 4)

可变数组ArrayBuffer,可以加入任意数量的元素,不会出现数组越界。

        加入操作: arrayBuffer+= (2,3,4)

        删除操作:.trimStart(n)    //从数组的头开始删除n个元素

.trimEnd(n)    //从数组的尾开始删除n个元素

.remove(d)     //从数组中删除第d位的元素

并返回删除元素的值

                               .remove(d,n) //删除数组中从d位算起的其后n个数

              插入操作:.insert(d,x)//d位插入元素,其中可以插入一个或多个元素

              转换操作: arraybuffer.toArray    //将可变数组转换为长度不可变数组

                                          Array.toBuffer      //将不可变数组转换为长度可变数组

       数组遍历:for(i<- 0 until (arr.length, 2))   println(arr(i))

                            for(i <- (0 untilarr.length) .reverse)   println(arr(i))//从尾部开始遍历

数组转换为字符串:arr.mkString(“,”)

  排序:         scala.util.Sortint.quickSort(arr)

  遍历时可以使用yield,其将收集yield后的表达式的值并组成一个Array

for (i <- arr if i % 3 == 0) yield i*i

过滤: arr.filter(_ % 3 == 0).map( i => i*i )

 

Map存储的是键值对

val person =  map(“spark” -> 6, “hadoop” -> 11)   //赋值

person += (“flink”-> 5)                 //添加

person -= (“flink” -> 5)                   //删除

person.contains(“spark”)                 //包含

person.getorElse(“spark”,100)   <=>

if(person.contains(“spark”)person(“spark”)else 100)

for((key,value) <- person)  println(key + ” ”+value)  //遍历

              scala.collection.immutable.SortedMap(“key”->value)//key值排序

 

tuple元组    val tuple = “spark” 6 9 6  //赋值,tuple可以包含任意类型元素

                                   tuple._1                        //取元组中位置为1的元素

目录
相关文章
|
6月前
|
大数据 Scala
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
54 0
|
Java Scala C++
Scala选择和循环语法
Scala选择和循环语法
54 0
|
分布式计算 Java Scala
一天学完spark的Scala基础语法教程十二、异常处理(idea版本)
一天学完spark的Scala基础语法教程十二、异常处理(idea版本)
198 0
一天学完spark的Scala基础语法教程十二、异常处理(idea版本)
|
NoSQL Java Scala
Swift和Scala语法上的诸多相似之处
国外开发者最近发现,WWDC2014上苹果发布的新语言Swift,和古老的Scala语言在语法上存在众多的相似之处。
242 0
Swift和Scala语法上的诸多相似之处
|
Java Scala
Scala语法详解:特质 (Traits)
Scala语法详解:特质 (Traits)
129 0
|
Java 程序员 Scala
Java 程序员必备scala基础语法
Java 程序员必备scala基础语法
80 0