scala笔记

(一)简介

1.编程模式:(1)交互式;(2)脚本式;

2.scala特点:函数式编程;

3.一个简单的例子:

package demo                //包名
object HelloWorld {
   def main(args: Array[String]) {
      println("Hello, world!")
   }
}

(1)编译:scalac demo.scala生成文件夹demo,下面有HelloWorld.class文件

          运行:scala demo.HelloWorld

(2)区分大小写;

(3)注释采用/* 或者//;

(4)语句之间可以用分号或者换行分隔开来;

(5)包机制使用关键字package,编译后会根据包名生成文件夹层,例如包名为A.B则生成A/B的文件夹层级;

(6)关键字object定义的对象无须new,是一个单例对象;(只有一个实例对象的类,对象即类)

(7)scala程序从单例对象的main()方法开始处理,这是每一个scala程序的强制程序入口部分;

(二)语法

1.数据类型


(1)变量声明:var表示可变变量,val表示不可变变量

var  名字:类型 = 变量内容 

val  名字:类型 = 变量内容

var  名字 = 变量内容

val  名字 = 变量内容

(2)字符串:

1)双引号定义;

2)字符串连接可用“+”

(3)数组

1)声明语句:var arr:Array[String] = new Array[String](3)

2)赋值语句:var arr:Array[Int] = Array(1,2,3)

3)数组读取:arr(0)

2.语句

(1)if语句

if(Boolean_expression){
   //Executes when the Boolean expression is true
}else{
   //Executes when the Boolean expression is false
}
(2)while语句

while(condition){
   statement(s);
}
(3)do while语句

do{
   statement(s);
}while( condition );
(4)for语句

for( var x <- Range ){
   statement(s);
}
3.函数

(1)函数声明

def functionName ([list of parameters]) : [return type]
(2)函数定义

def functionName ([list of parameters]) : [return type] = {
   function body
   return [expr]
}

PS:函数定义可以不写甚至没有输入参数或返回参数,只有函数名(若是函数中有return语句,则需声明返回类型);

4.类与对象

import java.io._

class Yiibai(val xc: Int, val yc: Int) {
   var x: Int = xc
   var y: Int = yc
   def move(dx: Int, dy: Int) {
      x = x + dx
      y = y + dy
      println ("Yiibai x location : " + x);
      println ("Yiibai y location : " + y);
   }
}

object Test {
   def main(args: Array[String]) {
      val pt = new Yiibai(10, 20);

      // Move to a new location
      pt.move(10, 10);
   }
}

(1)类的实例化(对象)使用new关键字;

(2)类的继承使用extends关键字;

(3)类的继承时,若方法覆盖,则使用override关键字;

(4)scala中只允许单继承;

(5)抽象类与trait

1)抽象类的定义使用关键字abstract;抽象类会有部分实现,也有部分没有实现的方法定义;抽象类最大的特征是不能直接实例化;

2)特征的定义使用关键字trait;特征会有部分实现,也有部分没有实现的方法定义;

3)抽象类与trait的区别在于一个类只能extends一个抽象类,但是可以extends多个trait;(多个extends时使用关键字with)

(6)类的构造函数:this;

(7)调用超类:super;

(三)常见知识点

1.几种符号:

(1)符号<-:用于遍历集合,比如a<-A表示对集合A进行遍历,每次的遍历元素赋值于a;

(2)符号=>:转化符号,比如 var in = (x:Int)=>x+1表示将x转化为x+1;执行in(3)返回4;

(3)符号->:用于map或者hashmap中的键值指定;

(4)_2:表示tuple中的第二个元素;_:表示each的意思;


2.容器

(1)链表:val x = List(1,2,3)

(2)集合:val x = Set(1,2,3)

(3)键值:val x = Map(1->"a",2->"b")

(4)元组:val x = (1,2,3)

3.函数编程思想:

1)map函数:多少个数据元素进,多少个数据元素出


2)flatMap函数:以最小数据元素为单位,进行数据打通(最小数据元素就是Int等单类型)


3)filter函数:根据条件过滤


4.异常处理

try{

        xxx

}

catch{

        case ex:NumberFormatException => {xxx}

        case ex:FileNotFoundException => {xxx}

}

5.注解:在定义变量之前加上以@开头的注解,可以让变量多一些特定的方法;比如@BeanProperty等;


6.println输出变量与字符串:前缀s,符号$;


7.if语句等模块可以跟在赋值语句中:


8.foreach:


9.Scala中定义枚举类型方法如下


(1)extends 标准类库Enumeration

(2)调用Value方法来初始化枚举中的可能值

(3)可以为Value传入id和name

10.match{

      case xxx => xxx

      case xxx => xxx

类似于switch case

11.leftFold的用法:从左开始,往右遍历,需传入两个参数,一个初始值,一个计算的函数


12.数组长度与定义若干重复元素的数组:

13.getOrElse:


14.mkString:



PS:API


©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值