4

阅读本文时,我想到了以下语法:

implicit val slaveCanRead: Slave HasPrivilege Read = null

作者说:

另外,请不要这Slave HasPrivilege Read只是另一种表示法HasPrivilege[Slave, Read]

将示例保留在基本 scala 中,示例也可以是

val foo: Map[String, Long] = Map()
val bar: String Map Long = Map()

我正在寻找一些可以解释这种语法但找不到的文档/文章。有人可以指出允许这种语法的语言功能吗?

4

2 回答 2

5

它真的很简单T1 TCon T2 = TCon[T1, T2]。这是语言规范的第 3.2.8 节

InfixType ::= CompoundType {id [nl] CompoundType}

如果中缀类型以:它结尾是右结合的,否则它是左结合的,就像方法一样,并且混合固定性是没有括号的错误。

于 2017-10-20T12:35:24.850 回答
2

这是一个中缀类型。因此

val map: Map[String, Int] = ...

实际上相当于

val map: String Map Int = ...

这对于Function类型特别有用,因此您可以编写

val f: Int => Int = ...

代替

val f: Function[Int, Int] = ...
于 2017-10-20T12:39:07.797 回答