zoukankan      html  css  js  c++  java
  • Scala--操作符

    一、标识符

    二、中置操作符

    中置表达式,操作符位于两个参数之间

    1 to 10

    1.to(10)

    1 -> 10

    1.->(10)

    三、一元操作符

    a.标识符()

    1 toString

    1.toString()

    +、-、!、~ 可以作为前置操作符,转换成名为 unary_操作符 的方法调用

    -a  和 a.unary_-  一样 

    四、赋值操作符

    a+=b   a = a + b

    五、优先级

    + ->优先级相同 

    中置操作符高于后置操作符

    a 中置操作符 b 后置操作符  等同于

    (a 中置操作符 b) 后置操作符

    六、结合性

    所有操作符都是左结合的,除了:

    • :操作符
    • 赋值操作符

    构造列表的操作符::是右结合的
    1::2::Nil     1::(2::Nil)

    2::Nil   Nil.::(2)  右结合的二元操作符是其第二个参数的方法

    七、apply和update方法

    用于数组和映射

    f.update(arg1, arg2, ..., value)     f(arg1,arg2,...) = value  更新值

    f.apply(arg1,arg2,...)                  f(arg1,arg2,...)               获取值

      val scores = new scala.collection.mutable.HashMap[String,Int]
      scores("Bob") = 100  // scores.update("Bob",100) 
      val bobsScore = scores("Bob")  // val bobsScore = scores.apply("Bob")
      println(bobsScore)

    被用在伴生对象中,用来构造对象而不用显示地使用new

      class Fraction(n:Int, d:Int){
        
      }
    
      object Fraction{
        def apply(n:Int, d:Int) = new Fraction(n, d)
      }

    这样直接可以使用Fraction(3,4)来构造出一个分数,而不用 new Fraction(3,4)

    八、提取器

    所谓提取器就是一个带有unapply方法的对象,把unapply当做伴生对象中apply方法的反向操作。

    unapply方法接收一个对象,然后从中提取值,通常这些值是当初用来构造对象的参数值

    unapply返回的是一个Option,包含一个元组。

      object Fraction{
        def apply(n:Int, d:Int) = new Fraction(n, d)
        def unapply(input: Fraction) ={
          if(input.den == 0) None else Some((input.num, input.den))
        }
      }

    此例中返回Option[(Int, Int)]

    九、带单个参数或无参数的提取器

    十、unapplySeq方法

    参考《快学Scala》

  • 相关阅读:
    树莓派/Debian 搭建 FTP 服务器
    树莓派/Debian “无法定位软件包 mod_ssl” 问题解决方案
    树莓派/Debian HTTP 到 HTTPS 端口重定向
    树莓派/Debian 搭建ownCloud私有云网盘
    树莓派/Debian 构建 LAMP Web 服务器并搭建 WordPress 博客(二)
    改进一维搜索
    实现共轭梯度法蒙皮模拟
    基本实现蒙皮模拟
    实现权重计算
    把状态保存
  • 原文地址:https://www.cnblogs.com/one--way/p/5831870.html
Copyright © 2011-2022 走看看