小编Ehu*_*dor的帖子

迭代案例类数据成员

我正在用mongodb编写一个play2.1应用程序,我的模型对象有点广泛.当更新数据库中的条目时,我需要将来自表单的临时对象与数据库中的内容进行比较,这样我就可以构建更新查询(并记录更改).

我正在寻找一种方法来通常采取2个实例并得到它们的差异.迭代每个数据成员是长的,硬编码的和容易出错的(如果a.firstName.equalsIgnoreCase(b.firstName))所以我正在寻找一种方法迭代所有数据成员并水平比较它们(名称的地图 - >值将执行,或者我可以信任的列表,每次都以相同的顺序枚举数据成员).

有任何想法吗?

case class Customer(
  id: Option[BSONObjectID] = Some(BSONObjectID.generate),
  firstName: String,
  middleName: String,
  lastName: String,
  address: List[Address],
  phoneNumbers: List[PhoneNumber],
  email: String,
  creationTime: Option[DateTime] = Some(DateTime.now()),
  lastUpdateTime: Option[DateTime] = Some(DateTime.now())
)
Run Code Online (Sandbox Code Playgroud)

以下所有三个解决方案都很棒,但我仍然无法获得该领域的名称,对吧?这意味着我可以记录更改,但不会记录它影响的字段...

scala playframework playframework-2.1

13
推荐指数
3
解决办法
1万
查看次数

如何获取Akka中现有ActorSystem的引用?

是否有可能在Akka(scala)中获得对现有ActorSystem的引用?

我正在与另一个DB的Actor一起开发Spray应用程序.我也在扩展Directives以获得每个路径的对象.指令本身不是actor,但是它们需要将消息传递给DBActor.这里:

class HttpActor extends Actor with HttpService {

  val actorRefFactory = context

  def receive = runRoute(
    IndexService.route ~ 
    HostsService.route    
  )
}

object HostsService extends Directives{
  def route(implicit dm: DetachMagnet2) = {
    path("hosts") {
      get {  
        detach() {
          **dbActor ! CreateHost** 
          complete("get me hosts!")
        }
      } ~
      post {
        detach() {
          entity(as[String]) { payload =>
            complete(s"post hosts $payload")     
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让HostsService发现ActorSystem本身,这样他就可以找到DBActor,或者HttpActor是否必须将其传入?后者似乎不太优雅,因为HostsService需要成为一个类(而不是一个对象),因此不再是单例.

scala actor akka spray

9
推荐指数
1
解决办法
4009
查看次数

在List中使用自定义scala类型

我期待创建一个表示数据大小(字节,KB ...)的类型系列.为此,我们的想法是建立一个基本类型,使其具有以下实际尺寸:

  type SizeUnit = Int
  type B = SizeUnit
  type KB = SizeUnit
  type MB = SizeUnit
  type GB = SizeUnit
  type TB = SizeUnit
  type PB = SizeUnit
  type EB = SizeUnit
  type ZB = SizeUnit
  type YB = SizeUnit
Run Code Online (Sandbox Code Playgroud)

有一个有序的列表:

val sizes = List(B, KB, MB, GB, TB, PB, EX, ZB, TB)
Run Code Online (Sandbox Code Playgroud)

并且有一个转换方法,它采用目标类型,找到它们之间的索引差异,并乘以差异的幂乘以1024.所以:

def convertTo(targetType: SizeUnit): SizeUnit ={
  def power(itr: Int): Int = {
    if (itr == 0) 1
    else 1024*power(itr-1)
  }

  val distance = sizes.indexOf(targetType) - …
Run Code Online (Sandbox Code Playgroud)

scala typelist custom-type

5
推荐指数
1
解决办法
5899
查看次数

Akka-HTTP 可以做 HTTP/2.0 吗?

听起来像是一个简单的问题,但我找不到答案(可能是因为在搜索“如何使用 Akka-HTTP 执行 HTTP/2.0”时,“2.0”被解释为 Akka 的版本)。

似乎 akka-http 确实有一个用于 HttpProtocols 的构造,但它只有 HTTP 1.0 和 HTTP 1.1。

http2 akka-http

5
推荐指数
1
解决办法
1631
查看次数