Scala基础一

2017/11/08 Scala

基础内容一

先把前些日子的笔记记录上。内容和JAVA ,C++对比着理解。

安装

安装JDK,然后
brew install scala brew install sbt 没有brew的话,百度一秒钟。这篇文章使用的是scala 2.11.2。

语句

没有分号;编译器自动推断语句的结束,当然也可以加上

变量的声明

val(不可修改指向),var(可修改指向),大部分变量都是引用,相当于比指针,所以指向不可以修改的情况下,内容是可以修改。除非是基本类型或者是不可变数据结构。scala中推荐使用val,可以减少并发中的问题。

原生类型

scala中会自动把java中的原生类型转换为对象。

Range 语法

x to n (by a) ,可以包含原生类型和BigInt,BigDecimal。没有什么好多说的

偏函数

PartialFunction,顾名思义只处理部分输入的函数。偏函数只能包含case语句。可以链式连接。全部匹配不上会抛出MatchError. 如

val pf1: PartialFunction[Any,String]={case s:String => "YES"}
val pf2: PartialFunction[Any,String]={case d:Double => "YES"}
val pf=pf1 orElse pf2

函数pf可以匹配的就是String和Double,如果两者都不是,会出错。

方法声明

def fun1(): Unit={
  //没有参数的函数
}
def fun2(a:Int,b:Int=1,f:String=>Unit): Unit={
  //三个参数的函数,其中f是函数作为参数,有随意顺序的默认值(这点比JAVA和C++方便多了)
}

scala中可以用花括号包括参数列表,可以多行

方法嵌套

函数定义的时候可以嵌套,可以减少只有一次调用的函数小函数的数量。感觉这个更加像语法糖。

def factorial(i: Int): Long={
  def fact(i: Int, accumulator: Int): Long={
    if ( i <= 1 ) accumulator
    else fact(i - 1,i * accumulator)
    }
  fact(i, 1)
}

类型推断

显式类型注解

  1. 声明变量,没有立刻初始化时。
  2. 函数参数。
  3. 方法的返回值类型,如果使用了return,或者是递归函数,函数重载的情况下,或者自动推断类型比想要的更宽泛,即返回Any。
  4. 函数没有指定类型(即函数声明中没有=),会默认返回Unit类型。如
def fun1(){ //return type:Unit
  
}

今天先写这么多,第一个系列是Scala,然后是Java并发和Siddhi Cep。

Show Disqus Comments

Search

    Table of Contents