Bla*_*son 1 generics scala generic-programming
大家好我对来自C#的Scala相当新.
我正在尝试编写自己的累积版本(折叠)我想知道为什么我遇到以下问题:
def accumulate[T](list : List[T], initial: T, f: (T, T) => T) : T = {
@tailrec def loop[T](list: List[T], accum: T) : T =
if(list.length == 0)
accum
else{
val head : T = list.head
val res : T = f(accum,head)
loop[T](list.tail, res)
}
loop(list,initial)
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
type mismatch;
found : accum.type (with underlying type T)
required: T
val res : T = f(accum,head)
^
Run Code Online (Sandbox Code Playgroud)
考虑到一切都是T型,我无法看到我的类型不匹配.
任何想法/帮助将不胜感激.
布莱尔
您应该从loop方法中删除type参数.替换loop[T]为loop.
随着loop[T]要创建一个使用新名称类型参数T,所以T外面loop的方法和T在loop方法是不同的类型别名具有相同名称.
它被称为阴影.
有关类似问题,请参阅以下答案
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |