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来提取个集合

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

     

  • 相关阅读:
    HTML5 实现Link跳线效果
    在TWaver的Tree节点上画线
    用TWaver加载大型游戏场景一例
    22万个木箱!TWaver 3D极限压榨
    如何在MONO 3D寻找最短路路径
    如何创建TWaver 3D的轮廓选中效果
    巧用TWaver 3D 矢量图形功能
    如何实现TWaver 3D颜色渐变
    HDU 1390 Binary Numbers
    HDU 1328 IBM Minus One
  • 原文地址:https://www.cnblogs.com/itboys/p/9862196.html
Copyright © 2011-2022 走看看