6

Generics でシンボル「That」を使用するコードの例をいくつか見てきました。すなわち

def map[B, That](f : (A) => B) : That

しかし、その単語のグーグル機能がないため、その機能や使用方法に関するドキュメントが見つかりません。

それは単に通常のタイプのプレースホルダーですか、それとも何か特別なことをしますか?

4

3 に答える 3

13

内部のすべての識別子[...]は、型パラメーターとして扱われます。

したがって、の場合はdef map[B, That](f : (A) => B) : That Thatジェネリックな戻り値の型を意味します。Zたとえば、次のように置き換えdef map[B, Z](f : (A) => B) : Zます。まったく同じ効果があります。

于 2013-02-13T08:02:21.823 に答える
3

Javaに変換すると、次のようになります。

public <B, That> That map(f: Function1<A, B>)

または、言い換えれば、Thatジェネリック(または、Scala lingoでは型パラメーター)です。

于 2013-02-13T08:14:37.637 に答える
3

これは、あなたがそれを呼ぶときの「プレースホルダー」(つまり、タイプパラメーター)です。コレクションライブラリの規則は、That作成されるコレクションのタイプを表すために使用されます。(したがって、からに変換しthisますThat。)

于 2013-02-13T12:14:22.763 に答える