• Scala隐式参数


      Scala方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记。如果参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,将自动传递。

      Scala将查找这些参数的位置分为两类:

        1.Scala在调用包含有隐式参数块的方法时,将首先查找可以直接访问的隐式定义和隐式参数(无前缀)。

        2.在所有伴生对象中查找与隐式候选类型相关的有隐式标记的成员。

     1 package big.data.analyse.scala
     2 
     3 /**
     4   * Created by zhen on 2019/1/12.
     5   */
     6 /**
     7   * 定义隐式参数
     8   * 单个
     9   */
    10 object ImplicitContext{
    11   implicit val sex : String = "man" //名称不影响下面使用,可以是不同的名称
    12 }
    13 /**
    14   * 定义隐式参数
    15   * 多个
    16   */
    17 object ImplicitContextMutil{
    18   implicit val sex : String = "woman" //名称不影响下面使用,可以是不同的名称
    19   implicit val he : String = "he"
    20 }
    21 object ImplicitParam {
    22   //定义使用隐式参数的函数
    23   def useImplicitMethod(name : String)(implicit sex : String){ // 柯里化
    24     println(name + " has eighteen years old,he is a good "+ sex)
    25   }
    26   def main(args: Array[String]) {
    27     useImplicitMethod("L.L")("girl")
    28     // 导入隐式参数
    29     import ImplicitContext._ // 导入全部,只能存在一个隐式参数
    30     useImplicitMethod("J.J")
    31     /**
    32       * 当存在多个隐式参数时,要想使第二次导入的生效必须定义成相同的名称。
    33       */
    34     //import ImplicitContextMutil.he // 失效
    35     import ImplicitContextMutil.sex // 导入指定的一个隐式参数,避免出现歧义
    36     useImplicitMethod("J.K")
    37   }
    38 }

    结果:

      

  • 相关阅读:
    046.Kubernetes集群管理-日常运维
    045.Kubernetes集群存储-CSI存储机制
    044.Kubernetes集群存储-StorageClass
    043.Kubernetes集群存储-共享存储
    CKAD考试心得分享
    050.Kubernetes集群管理-Prometheus+Grafana监控方案
    附015.Kubernetes其他技巧
    041.Kubernetes集群网络-K8S网络策略
    042.Kubernetes集群网络-flannel及calico
    040.Kubernetes集群网络-CNI网络模型
  • 原文地址:https://www.cnblogs.com/yszd/p/10258977.html
Copyright © 2020-2023  润新知