• scala学习笔记(8)


    1.trait

    -------------------------------

     如果只有一个trait就使用extends进行扩展,如果是多个,就使用with对生于trait进行扩展

     trait logger1{
    
        def log()= println("hello log1");
      }
    trait logger2{
    
        def log()= println("hello log2");
      }
      class Dog with logger{      }

     

    //trait之间也存在扩展

      trait logger2 extens logger1{}

    //with trait 是需要对每个trait都使用trait

    自身类型

    ----------------------------------------------

      this:类型=>

    操作符

    ---------------------------------

      1.中置操作符

        a 标识符 b    //标识符代表一个有两个参数的方法(一个隐式的参数和一个显示的参数)

        如:1 + 2<===> 1.+(2)    //这样的表达式叫做中置(infix)表达式,因为操作符位于两个参数之间

      2.单元操作符

      scala> 1 toString  //单元操作符

      scala> +: -:  !:boolean取反    ~:按位取反       //

      赋值操作符

      $scala>+=  /  -=  *=   /=

      结合性:

        当有一些列的相同优先级的操作符的时候,操作符的结合性决定了其实从左到右求值还是从右到左求值

        scala中所有的操作符都是左结合的,除了:(1)以冒号:结尾的操作符;(2)赋值操作符;(3)Nil:空集合

        在Nil结合中追加元素:1::Nil    //List[Int]=List(1)    1::2::Nil    //List[Int] = List(1,2)

        运算顺序:val list=2::Nil    1::list    //返回值:List[Int] = List(1,2)

        //:表示右结合,优先级从右边开始

        scala>val l = Nil      //构造空集合

        scala>1::2::Nil      //

    3.apply和update方法

    ---------------------------------------------------------

      Array(100)    //Array.apply(100);

      Array(100) = 200  //Array.update(200)  进行更新操作

      unapply(),是apply的逆向过程

      object Dog{

        //

        def apply(str):Int = {str.Int+100}

        def unapply(i:Int) = {(i-100).toString}

      }

    upapply(),是apply()的逆向过程

    ------------------------------------------------

      class Fraction(n:Int,d:Int){

      }

      object Fraction{

        def apply(n:int,d:int)=new Fraction(n,d)  

      }

  • 相关阅读:
    USACO 2021 US Open
    【UR #20】跳蚤电话
    省选前的做题记录
    PE444
    杂题
    CF1190E
    gym100299E
    杂题
    2021 5 10 团队博客
    2021 5 9 团队博客
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9684615.html
Copyright © 2020-2023  润新知