case object Empty extends Stream[Nothing]
case class Cons[+A](h: () => A, t: () => Stream[A]) extends Stream[A]
sealed trait Stream[+A] {
def toList: List[A] = {
val buf = new collection.mutable.ListBuffer[A]
def go(s: Stream[A]): List[A] = s match {
case Cons(h, t) =>
buf += h()
go(t())
case _ => buf.toList
}
go(this)
}
def cons[A](hd: => A, tl: => Stream[A]): Stream[A] = Stream.cons(hd, tl)
def empty = Stream.empty
def unfold[A, S](z: S)(f: S => Option[(A, S)]): Stream[A] = f(z) …Run Code Online (Sandbox Code Playgroud) 我有一个关于隐式转换的问题......
1 to 4: Range[Int] -> Queue[Int] 转换效果很好
但1.0 to 4.0 -> Queue[Double]不起作用......
我的代码下面有什么问题?
=========================================
import scala.collection.immutable._
sealed trait XS[A]{
def print: Unit = this match {
case RXS(q) => println(q)
case LXS(msg) => println(msg)
}
}
case class RXS[A](q: Queue[A]) extends XS[A]
case class LXS[A](msg: String) extends XS[A]
object XS {
implicit def seqToQueue[A](seq: Seq[A]): Queue[A] = {
seq.foldRight(Queue[A]())((a, acc) => a +: acc)
}
def apply[A](seq: Seq[A]): XS[A] = {
RXS(seq)
}
}
object XSTest extends …Run Code Online (Sandbox Code Playgroud) scala ×2