【问题标题】:Understanding Scala Syntax理解 Scala 语法
【发布时间】:2018-08-29 20:42:45
【问题描述】:

我有下面的代码,我想知道Seq[String] = List() 是什么意思? 这是否意味着它需要字符串序列并将其转换为List()

def somefuncname(input: Seq[String] = List()): Unit = {
  //Some Code
}

【问题讨论】:

  • 请先阅读一些教程,见scala-lang.org
  • 你可以在ScalaFiddle 中玩转:把这个放到你的方法中:println(input),然后调用 somefuncname() 和 somefuncname(List("1","2","3") )。如果删除 = List() 如果在不带参数的情况下调用它时不会编译

标签: scala default-parameters default-arguments


【解决方案1】:

首先尝试理解下面的函数签名。

def somefuncname(input: Seq[String]): Unit = {
  //Some Code
}

上面的代码是一个函数声明。它是一个函数,它接受一个名为input 的参数,其类型为Seq[String]。这意味着它将序列或字符串列表作为输入并且不返回任何内容Unit

现在,= 是什么意思?

函数输入参数后的=表示函数参数的default value。如果您对传递自定义“字符串序列”不感兴趣,则可以依赖已传递的默认参数。

现在,List() 是什么意思?

List() 返回 0 个元素的序列或空序列。这意味着函数将空元素作为默认参数

您也可以将Seq() 作为默认参数传递。也表示空序列

def somefuncname(input: Seq[String] = Seq()): Unit = {
 //Some Code
}

现在可以通过以下任一方式使用该功能

  1. somefuncname() // 现在input 是空字符串序列

  2. somefuncname(Seq("apple", "cat"))

  3. somefuncname(List("apple", "cat"))

【讨论】:

    【解决方案2】:

    input 的类型是 Seq[String],它的默认值为空列表 (List())。 拥有默认值意味着如果您在不传递参数的情况下调用函数,它将获得默认值

    【讨论】:

      猜你喜欢
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多