gpt4 book ai didi

scala - 你能解释一下这段 Scala 代码吗?

转载 作者:行者123 更新时间:2023-12-02 08:13:14 25 4
gpt4 key购买 nike

有人可以为我介绍这段 Scala 语法吗?我是这门语言的新手,来自 Java。

val map = Map(seq map { a => a.key -> a }: _*)

特别是我理解 a => a.key -> a 是一个匿名函数,它为每个函数返回一个 pair(?) (a.key, a) a,但是 : _*{ } 是做什么的,为什么 seq map ?它们是 Map 构造函数的参数吗?

最佳答案

: _* 告诉编译器将 arr 的每个元素作为其自己的参数传递给函数,而不是将所有元素作为单个参数传递。或者换句话说,它是类型归属的一个特殊实例,它告诉编译器将序列类型的单个参数视为可变参数序列,即 varargs

_* 类型注解包含在 SLS 的“4.6.2 重复参数”中。

The last value parameter of a parameter section may be suffixed by “*”, e.g. (..., x:T *). The type of such a repeated parameter inside the method is then the sequence type scala.Seq[T]. Methods with repeated parameters T * take a variable number of arguments of type T . That is, if a method m with type (p1 : T1, . . . , pn : Tn,ps : S*)U is applied to arguments (e1, . . . , ek) where k >= n, then m is taken in that application to have type (p1 : T1, . . . , pn : Tn,ps : S, . . . , ps0S)U, with k ¡ n occurrences of type S where any parameter names beyond ps are fresh. The only exception to this rule is if the last argument is marked to be a sequence argument via a _* type annotation. If m above is applied to arguments (e1, . . . , en,e0 : _*), then the type of m in that application is taken to be (p1 : T1, . . . , pn : Tn,ps :scala.Seq[S])

{ }表示一个代码块,由多个语句声明组成,其value 是最后一条语句的值。如果您需要声明、多条语句、导入或类似的东西,您需要大括号

Scala 有一种特殊的punctuation-free 语法来调用接受一个参数的方法。一般规则是 可以在没有点或括号的情况下调用采用单个参数的 Scala 方法

关于scala - 你能解释一下这段 Scala 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44205772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com