美文网首页
Scala学习笔记(一)

Scala学习笔记(一)

作者: Rinoux | 来源:发表于2016-08-22 11:15 被阅读28次

    Scala学习笔记

    1 val声明常量,var声明变量,使用val时相当于java的final修饰符是不可变的。

    2 class中的内容都是非静态的,而object中的都是静态的,可以静态调用。在class中是无法定义main方法。

    3 方法声明采用def 方法名(参数:参数类型, ...) : 返回类型 = {} 的形式:

    • 多个参数使用,分隔,无参数时参数列表以及括号可以省略;
    • 无返回值时返回类型可以省略,大括号直接跟在参数列表后;
    • 有返回值时必须在后面加上

    4 scala采用类型推断(type inference),编译器会通过上下文推断类型信息。

    5 在scala中函数和方法是两个不同的概念,函数可以作为句柄的一部分而方法不行。

    6 若无return语句,最后一个有值的语句的值会作为返回值。

    7 for循环语句:

    for(i <- 1 to 10)
    for(i <- 0 util myArray.length)
    for(value <- myArray)
    

    8 扩展类可以使用extends关键字,但是一个class只能扩展一个类;

    9 特征/特质trait, 类似于java的interface,使用with关键字来使用特质,一个类可以with多个trait,这点与java一致。区别在于,类可以不一定实现trait,但是要在类名上加上abstract修饰符。

    10 extendswith的关系:extends后的语句是一体的:

    class MyClass extends AnyRef with T1 with T2 with T3
    

    这个类声明实际上应该是

    class MyClass extends (AnyRef with T1 with T2 with T3)
    

    因此一个类要“使用”某个trait,必须首先扩展一个类,默认为AnyRef,再使用扩展的类去间接使用trait

    11 模式匹配,可以使用switch,但更常用的是match关键字:

    x match {
      case 1 => "one"
      case "two" => 2
      case y: Int => "Scala.Int"
      case _ => "many"
      }
    

    _表示其它值

    12 异常处理,使用try catch finally三级异常处理机制,使用throw抛出异常:

    try {
        //Did something
        } catch {
          case e : Exception => //handle exception
          } finally {
            throw new RuntimeException("balabala")
            }
    

    19 类型的上下界:

    • U >: T:下界, U必须是T的本身或者父类;
    • S <: T:上界, S必须是T的本身或者子类;

    20 Unit类型是一种值类型, 仅用来表明方法的返回类型,Unit代表一个表达式单元,可以是语句也可以是具体值。

    相关文章

      网友评论

          本文标题:Scala学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/yinwsttx.html