其他分享
首页 > 其他分享> > Scala的基本语法

Scala的基本语法

作者:互联网

一、基本概念

  1. Scala中一共是39个关键字: package, import, class, object, trait, extends, with, for,private, protected, abstract, sealed, final, implicit, lazy, override,try, catch, finally, throw ,if, else, match, case, do, while, return, yielddef, val, var ,this, super,new,true, false, null
  2. 标识符的命名规则:
    1. 可以由字母、数字、_和$组成,虽然可以使用_,但是尽量减少使用_
    2. 数字不能开头
    3. 可以由特殊字符组成,如果一个标识符中含有特殊字符,那么这个标识符整个必须全部使用特殊字符
    4. 标识符可以用``来标记
  3. Java和Scala中的注释是一样的

 

二、变量

  1. 通过var声明变量,用val来定义常量
  2. 变量的声明格式:
    1. var 变量名:数据类型 = 值
    2. var 变量名 = 值
  3. Scala中变量必须在声明的时候给值

 

三、数据类型

  1. 在Scala中的顶级父类是Any
  2. AnyVal:任意值类型。包含Byte,Short,Int,Long,Float,Double,Char,Boolean,Unit
  3. AnyRef:任意引用类型。String、Null、异常、集合等类型
  4. Nothing:是所有类型的子类,表示不正常的返回结果
  5. 数据类型的装换:
    1. 自动类型转换
      1. 内置转换规则
      2. 可以通过隐藏函数来自定义转换规则
    2. 强制类型转换
      1. 如果是AnyVal之间的转换,那么通过toXXX函数来转换
      2. 如果是向上造型的强转,那么需要通过asInstanceOf

 

四、运算符

  1. Scala中包含5类运算符:算术、赋值、关系、逻辑、位,Scala中不支持三元运算
  2. Scala中不支持++/--
  3. Scala将所有的运算符都封装成了函数
  4. 在Scala中,变量不能同时定义多个,必须分开定义
  5. 在Scala中,任何一个结构都有计算结果,也就意味着赋值运算也需要有计算结果
  6. 所有赋值运算的结果类型都是Unit
  7. Scala不支持连等运算

 

五、流程控制

  1. Scala中不支持switch-case
  2. if结构的结果类型要根据计算结果确定
  3. while/do-while结构的结果类型一定是Unit
  4. to和until:to到边界,until不包含边界
  5. yield表示将计算结果返回,放入集合中
  6. Scala中不支持break和continue
  7. Scala提供了一个Breaks类来模拟break的作用

 

六、函数

  1. Scala是一门函数式编程的语言,意味着函数在Scala中是和对象一样作为一等公民使用,即函数可以定义在任何地方,函数也可以作为参数或者返回值
  2. 函数的标准定义格式:

                      def 函数名(参数列表):返回值类型 = {

                      函数体

                     return 返回值

                     }

  1. 函数体的最后一行的执行结果默认作为函数的返回值,所以可以省略return
  2. 如果函数体只有1句,可以省略{}不写
  3. 也可以省略返回值类型不写,那么函数在编译的时候会根据函数的计算结果来自动推导返回值类型
  4. 如果一个函数没有参数,那么可以省略()不写
  5. 函数可以重载,可以递归
  6. 在Scala中,所有的参数都是常量
  7. 在Scala中,递归结束之前,函数无法推导这个函数的结果类型,所以递归中要求的函数必须声明返回值类型
  8. 如果一个函数的返回值或者参数是另一个函数,那么这个函数就称之为高阶函数 - 闭包是高阶函数的一种
  9. 闭包:函数构成嵌套并且函数的返回值是函数,作用是能够延长外部函数中变量的声明周期
  10. 在匿名函数中,如果参数只使用一次,可以使用_来代替

标签:基本,函数,Scala,可以,语法,计算结果,类型,返回值
来源: https://blog.csdn.net/qq_45453185/article/details/115284872