【问题标题】:Understanding Scala Syntax理解 Scala 语法
【发布时间】:2018-08-29 20:42:45
【问题描述】:
我有下面的代码,我想知道Seq[String] = List() 是什么意思?
这是否意味着它需要字符串序列并将其转换为List()?
def somefuncname(input: Seq[String] = List()): Unit = {
//Some Code
}
【问题讨论】:
-
-
-
你可以在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
}
现在可以通过以下任一方式使用该功能
somefuncname() // 现在input 是空字符串序列
somefuncname(Seq("apple", "cat"))
somefuncname(List("apple", "cat"))
【解决方案2】:
input 的类型是 Seq[String],它的默认值为空列表 (List())。
拥有默认值意味着如果您在不传递参数的情况下调用函数,它将获得默认值