Reduceleftのタイプパラメーターに下限が含まれるのはなぜですか?
-
27-10-2019 - |
質問
の署名 reduceLeft
いくつか Seq[A]
は
def reduceLeft [B >: A] (f: (B, A) => B): B
タイプの A
知られていますが、下限です >:
それを教えてくれます B
任意のスーパータイプにすることができます A
.
なぜこのようなのですか?なぜだめですか
def reduceLeft (f: (A, A) => A): A
シーケンスのヘッドがタイプであることをすでに知っています A
そして、私はその方法を考えることができません B
等しいもの以外のものである可能性があります A
. 。どこで例を提供できますか B
いくつかのスーパータイプですか?
解決
クラスBに方法があるとしましょう combine(other:B): B
. 。今、あなたは電話します reduceLeft((b,a) => b.combine(a))
のリストに A
s。戻りタイプ以来 combine
は B
タイプパラメーターへ reduceLeft
ある必要があります B
.
所属していません StackOverflow