当=>位于[]内时是什么意思?

时间:2019-06-29 12:55:26

标签: scala types

最近我看过一本名为“ Scala:应用机器学习”的书。我发现了:

type U = List[Fields => Double]

我在很多书中都没有见过=>中的[]。请为我解释一下。

2 个答案:

答案 0 :(得分:2)

以下是type U = List[Fields => Double]的组成部分:

  • Fields => Double是一种函数类型
  • List是集合类型的类型构造器
  • type U是类型别名

例如,假设我们具有以下功能

val foo: Int => String = (x: Int) => "hello " + x
val bar: Int => String = (x: Int) => "goodbye " + x
val zar: Int => String = (x: Int) => "greetings " + x

然后我们可以将它们收集到ListInt => String函数中,就像这样

List[Int => String](foo, bar, zar)

以相同的方式将整数收集到列表中

List[Int](1,3,42)

在Scala中,我们说函数是第一类值,这意味着我们可以像使用其他任何值一样使用它们,即将它们传入和传出其他函数,将它们添加到集合中,分配它们变量等。

type U是一种类型别名,表示它为右侧的类型提供了不同的名称。例如,我们可以使用它来简化长类型名称,因此,不用写List[Int => String],我们只需写U

def qux(c: U): U = c

将与

相同
def qux(c: List[Int => String]): List[Int => String] = c

List[T]是一个类型构造函数,这意味着当我们用具体的类型代替T,例如IntStringInt => String时,相应的类型List[Int]List[String]List[Int => String]

答案 1 :(得分:0)

这是 if (Properties.Settings.Default.myList == null) { } else { Properties.Settings.Default.myList.Clear(); 个函数,它们接受类型为if (Properties.Settings.Default.myList == null) {Properties.Settings.Default.myList = new List<?> etc... } 的参数并返回一个List

在Java 8中,它在语义上等效于Fields。 (不确定Scala是否将其翻译为引擎盖下的内容)。