2017-10-20 67 views
3

當讀取this article我來到了語法如下:聲明Scala中的一個通用類方括號

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

它的確如同T1 TCon T2 = TCon[T1, T2]一樣簡單。這是section 3.2.8 of the language specification

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

如果綴類型與:結束它是正確的關聯,和否則是左結合,就像方法和混合固定性是不帶括號的錯誤。

2

這是一個infix type。因此

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

實際上相當於

val map: String Map Int = ... 

是這是Function類型特別有用,所以你可以寫

val f: Int => Int = ... 

,而不是

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