我试图了解Scala中的辅助模式。
trait Lst extends Any {
type Item
def get(index: Int): Item
}
object Lst {
type Aux[I] = Lst {type Item = I}
}
我还有一些类将Item
覆盖为Integer
或String
或其他:
final case class IntLst(size: Int) extends AnyVal with Lst {type Item = Int}
final case class StrLst(size: Int) extends AnyVal with Lst {type Item = Char}
我想写一种可以从IntLst
或StrLst
实例创建列表的方法。我这样写:
def makeList(l: Lst): List[l.Item] = (0 until l.size map l.get).toList
但是它不能编译:{{1}}
那么Expected class or object definition
的定义应该看起来如何?
完整代码:
makeList
答案 0 :(得分:4)
问题出在get
上。尝试以下方法:
def makeList(l: Lst): List[l.Item] = (0 until l.size).map(l.get(_)).toList