2012-04-10 37 views
24

我有以下的斯卡拉類定義(在本文中),造型類:斯卡拉〜>(代字號大於)運算符

trait Category[~>[_, _]] { 
    def compose[A, B, C] 
    (f: B ~> C) 
    (g: A ~> B) 
    : A ~> C 
    def id[A]: A ~> A 
} 

有人可以解釋我是什麼「〜>」是指在類別類型參數,並在方法返回類型? 還是直接向我解釋它的資源...... 我是新來斯卡拉(從Java來),所以請原諒我,如果這件事情Scala的用戶應該知道...... 預先感謝您

回答

26

~>只是Category類型參數的佔位符名稱。像class Option[T]中的T一樣。

此外,Scala的語法,讓你寫B ~> C~>[B, C]的簡寫。

也許事情變得更清晰,如果你將其重命名:

trait Category[Mapping[_, _]] { 
    def compose[A, B, C](f: Mapping[B, C])(g: Mapping[A, B]): Mapping[A, C] 
    def id[A]: Mapping[A, A] 
} 
+0

現在,它更清晰......我想我會習慣自由使用怪異字符來命名的東西(Java不同)。我認爲事實上,'〜''提供了一些特殊的東西,但它可以被任何東西代替,因爲我正確理解這一點。非常感謝! – Andrea 2012-04-10 09:43:37

+0

是的,它完全是任意的(當然,在Scala的標識符命名規則中)。 – Debilski 2012-04-10 09:58:18

+8

順便說一句:爲什麼選擇「操作員」的原因,即運營商字符,而不是字母文字,是希望在範疇論域〜>容易轉化爲一種「射」的概念(又名「映射」 ,「箭頭」等)。通常你應該小心操作員。 – 2012-04-10 10:44:20