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

  • 相关阅读:
    Linux 命令[5]:rmdir
    Linux 命令[4]:pwd,date
    Linux 命令[0]:起航
    Linux 命令[3]:cd
    vscode插件
    Object.freeze()
    插件
    前端开发调试线上代码
    前端自动化测试是浪费时间还是节约时间?
    踩坑之用lrz插件进行图片压缩
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/14072236.html
Copyright © 2011-2022 走看看