zoukankan      html  css  js  c++  java
  • scala之旅-核心语言特性【多态方法】(二十九)

    在Scala中,方法可以和值一样可以被类型参数化。这样写的语法跟泛型很像。类型参数用中括号包着,值参数则是用小括号包着。

    下面就是例子:

    def listOfDuplicates[A](x: A, length: Int): List[A] = {
      if (length < 1)
        Nil
      else
        x :: listOfDuplicates(x, length - 1)
    }
    println(listOfDuplicates[Int](3, 4))  // List(3, 3, 3, 3)
    println(listOfDuplicates("La", 8))  // List(La, La, La, La, La, La, La, La)

    该方法listOfDuplicates采用类型参数A和值参数x以及lengthx是类型A如果length < 1我们返回一个空列表。否则,我们x将放在递归调用返回的重复项列表的前面(请注意,这::意味着将左侧的元素添加到右侧的列表之前。)

    在第一个示例调用中,我们通过编写显式提供了type参数[Int]因此,第一个参数必须为Int,返回类型为List[Int]

    第二个示例调用显示您不必总是显式提供type参数。编译器通常可以根据上下文或值参数的类型进行推断。在此示例中,"La"是,String因此编译器知道A必须是String

  • 相关阅读:
    常见mysql中出现的问题
    php 根据身份证号相关操作
    Linux的上传文件和下载文件
    php实现socket
    PHP开启缓存加速
    spark使用Hive表操作
    部署ganglia3.7
    Redis Cluster架构优化
    spark读取hdfs数据本地性异常
    spark join broadcast优化
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/14072236.html
Copyright © 2011-2022 走看看