scala(一种静态语言)

语法:

  关键字 val(表示:值) 不可变

    ex:  val a:Int=1   或者   val a=1(会自动识别类型,无基本类与包装类之分)

        输出:a:Int=1

  关键字var

    ex:  var a:Int=1

        输出: a:Int=1

  方法(API)定义:def 方法名(参数:类型,...,参数:类型):返回值={函数体}    (备注:在{}内的最后一行就是返回值

          API格式:方法名:(参数:类型,...,参数:类型)返回值(ex:  add:  (x:   Int,y:    Int)Int  )

          当不需要返回值类型为:def 方法名(参数:类型,...,参数:类型=默认参数):返回值(Unit){函数体}    ex:add:  (x:   Int,y:    Int)Unit  (Unit代表返回值为空

  def add(x :Int*)={函数体}    可变长参数,备注类型必须都是Int

  函数调用方式:如果一个函数不需要传参时,函数的()可以省略,直接方法名调用。但是:当def是没有()时,调用的时候不能有()

  所有immutable包下面的都是不可变的,mutable包下面都是可变的。

  

  scala是没有static的,使用object来实现(object没有同名的class(伴生类)则称之为游离对象)

  1.to(10)         1 until 10      range(1,2)   range(1,10,2)

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

  var array = Array(1,2,3,4)      array(0)

  lazy:   懒加载,当真正调用的时候才会加载

  

  占位符:_

  元组:ex:val a=(1,2,3,4)                                             ****************************************

      访问方式:a._1,a._2

  类加()调用的是object中的apply方法,对象加()调用的是class中的apply方法

  对象 match {

  }

  case class      默认类参数是val类型

  val  _add = add _                _add:表示函数指针        _add:(Int,Int) => Int

  匿名函数:(x:Int,y:Int)=>x+y    res1(1,2)       map(_*2)等价于map((x:Int)=>x*2)

  1::2::3::Nil                 返回的是List

  flatern  flatMap

  <:  , 向上看(上界)能看到什么。ex:[T<%Comparable[T]],T类型向上看必须能看到Comparable特质

  scala隐式转换的规则:

原文地址:https://www.cnblogs.com/jswang/p/9003709.html