zoukankan      html  css  js  c++  java
  • Scala的apply unapply unapplySeq 语法糖

     apply 可以理解为注入

    unapply unapplySeq 可以理解为提取
     
    apply 与 unapply 虽然名字相近,但是使用起来区别挺大。
    apply有点像构造函数
    unapply主要是结合模式匹配进行提取工作
    unapply 与 unapplySeq的共同点是返回值类型都是Option,区别是一个返回对象,一个返回集合对象

    apply的常用套路

    在函数调用的时候使用 对象名加个括号,等于调用个该对象的apply方法

    而且在一些数据类型中,同样也有该语法糖,例如集合,调用集合名加个括号,也相当于调用apply方法

    套路1:自定义apply

    套路2:配合class使用

    在一个类的伴生对象中定义apply方法,并在apply方法中new该类。

    最终在使用该类时,可以省去new关键字,使用语法糖即可。

    使用语法糖括号,来调用类中的方法

    调用单例类中的方法,则是不使用括号

    一般这么做是为了更方便简洁的传值,或者说更加简便的调用class

    unapply unapplySeq的常用套路

    提取器,顾名思义就是提取内容,并且还是个方法,那我们就可以把自己的业务逻辑放进去提取内容

    套路1:使用unapply来做个简单操作,例如提取前两位字符并且转换成大写

    套路2:使用unapplySeq来提取个集合

    在使用模式匹配的时候,可以使用下划线占位符,代替那些不想匹配的位置

     

  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/itboys/p/9862196.html
Copyright © 2011-2022 走看看