2017-07-10 3 views
0

私は猫docsで、次の例を見つけました:タイプパラメータを関数パラメータとして使用することについてのドキュメントはどこにありますか?

trait Monoid[A] { 
    def empty: A 
    def combine(x: A, y: A): A 
} 
def combineAll[A](list: List[A], A: Monoid[A]): A = list.foldRight(A.empty)(A.combine) 

1は、メソッドのパラメータとしてA: Monoid[A]書くことができますどのように来ますか?

おかげ

+1

左側の「A」は右側の「A」とは関係ありません。それは単なる変数名です。 'foo:Monoid [A]' – Dima

答えて

2

Scalaは型と値に別々の名前空間を持っているので、型と値は、それらの間の任意の関係なし(ディマさんのコメントが言うように)競合することなく、同じ名前を持つ、とすることができます。 A in A: ...は値です。 A in​​はタイプです。

猫が同じ名前を付けるのはちょうど猫の慣習なので、A(またはそのコンパニオンオブジェクト)で呼び出されるような、「見た目のような」A.emptyのような呼び出しはありますが、実際はそうではありません。

+0

ありがとうございます。しかし、それは混乱していた。 – costa

+0

この文脈では、typeパラメータとfuntionパラメータに同じ名前を使用することを意味しました。 – costa

関連する問題