最近我看过一本名为“ Scala:应用机器学习”的书。我发现了:
type U = List[Fields => Double]
我在很多书中都没有见过=>
中的[]
。请为我解释一下。
答案 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
然后我们可以将它们收集到List
个Int => 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
,例如Int
或String
或Int => 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是否将其翻译为引擎盖下的内容)。