使用Slick,您可以执行以下操作以从表中生成结果流:
val q = for (e <- events) yield e.name
val p: DatabasePublisher[String] = db.stream(q.result)
p.foreach { s => println(s"Event: $s") }
Run Code Online (Sandbox Code Playgroud)
这将打印events表中的所有事件并在最后一行之后终止.
假设您可以通过某种方式通知您何时在events表中输入新行,是否可以编写一个在插入事件时连续输出事件的流?一种tail -f用于DB表的.
我认为Slick本身不支持这个,但我认为应该可以使用Akka流媒体来提供帮助.因此,如果您可以从Slick Source获取某些东西,直到它为空,那么等待一个事件来指示表中的更多数据,然后流式传输新数据.可能通过使用一个ActorPublisher绑定这个逻辑?
只是想知道某人是否有这方面的经验或任何建议?
我在扩展扩展 Ordered[Base] 的基类时遇到问题。我的派生类无法扩展 Ordered[Derived],因此无法用作 TreeMap 中的键。如果我创建一个 TreeMap[Base],然后只覆盖 Derived 中的比较,这可以工作,但这不是我想要的。我希望能够将派生类作为密钥。有没有解决的办法?
case class A(x: Int) extends Ordered[A] {
def compare(that: A) = x.compare(that.x)
}
// Won't compile
// case class B(val y : Int) extends A(1) with Ordered[B] {
// def compare(that: B) = x.compare(that.x) match {
// case 0 => y.compare(that.y)
// case res => res
// }
// }
// Compiles but can't be used to define a TreeMap key
case class B(y: Int) extends A(1) {
override def compare(that: …Run Code Online (Sandbox Code Playgroud) 我有一个scala项目,我使用Maven和maven-scala-plugin进行编译.我需要在编译的类中包含调试信息,我想知道有没有办法让Maven或scala插件执行此操作.我发现这个页面听起来很有可能,但是不清楚将params放在pom.xml中的位置.
如果可能的话,我希望这个选项是pom.xml中指定的东西而不是命令行.
我正在尝试将项目从2.7转换为scala 2.8,并且我在与Java交互的代码中遇到了一些困难.下面是一个显示问题的稍微复杂的示例代码.基本上我有一个类型的成员变量的类mutable.Map[K,V],我找不到一种方法将其传递给期望a的方法java.util.Map[K,V].任何帮助都会很棒.
scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._
scala> class A[K,V](m : collection.mutable.Map[K,V]) {
| def asJava : java.util.Map[K,V] = m
| }
<console>:9: error: could not find implicit value for parameter ma: scala.reflect.ClassManifest[K]
def asJava : java.util.Map[K,V] = m
Run Code Online (Sandbox Code Playgroud) scala ×5
scala-2.8 ×2
actor ×1
akka ×1
akka-stream ×1
covariance ×1
debugging ×1
inheritance ×1
maven-2 ×1
maven-plugin ×1
slick ×1