在没有方括号的 Scala 中声明一个泛型 class

Declare a generic class in scala without square brackets

阅读this article时,我得出以下语法:

implicit val slaveCanRead: Slave HasPrivilege Read = null

作者说:

Also, please not that Slave HasPrivilege Read is just another notation for HasPrivilege[Slave, Read]

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

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

我正在寻找一些 documentation/articles 来解释这种语法,但找不到任何东西。有人可以指出允许这种语法的语言功能吗?

真的和T1 TCon T2 = TCon[T1, T2]一样简单。是 section 3.2.8 of the language specification.

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

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

这是一个infix type。因此

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

实际上等同于

val map: String Map Int = ...

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

val f: Int => Int = ...

而不是

val f: Function[Int, Int] = ...