小编Vis*_*ohn的帖子

在Play Json中读取snake_case属性为camelCase

我想在Play应用程序中提取json作为案例类.case类中的属性在camelCase中定义,json数据在snake_case中.

case class User(userId: Long, userName: String)
Run Code Online (Sandbox Code Playgroud)

和json就像这个{"user_name":"Vishal","user_id":67}

是否有一种简单的方法来指示播放json自动进行映射和提取,例如提供一些注释等.

playframework playframework-2.0

12
推荐指数
1
解决办法
2308
查看次数

scala将来的错误"不要直接调用`Awaitable`方法,使用`Await`对象."

我的特质方法是:

userService{
  def link(current: U, to:User): Future[U]
  def findUserByEmail(email:String):Future[Option[User]]
}
Run Code Online (Sandbox Code Playgroud)

当我执行时我使用:

for(link(currentUser, userService.findUserByEmail(email).result(Duration(1000, MILLISECONDS)).get)){
...
}
Run Code Online (Sandbox Code Playgroud)

而错误是:

[error] G:\testprojects\mifun\modules\app\controllers\
ProviderController.scala:130: Don't call `Awaitable` methods directly, use the `
Await` object.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这里必须使用await对象而不是等待方法,以及如何正确地更改它.

asynchronous scala

6
推荐指数
1
解决办法
2130
查看次数

终止Actor和ActorSystem后应用程序不退出

我有一个主程序,它创建一个ActorSystem,一个Actor并向actor发送一些消息.处理完消息后,我发送了PoisonPill来杀死Actor.然后我关闭了演员系统.

在演员中,我呼叫Await等待未来完成.我面临的问题是,即使演员被PoisonPill终止并且ActorSystem被关闭,应用程序也不会退出.

def main(args: Array[String]): Unit = {

    val actorSystem = ActorSystem("sytem")
    val creationActor = actorSystem.actorOf(Props[MyActor], "MyActor")
    ...
    creationActor ! Message    //may be called multiple times
    creationActor ! PoisonPill
    ...
}
Run Code Online (Sandbox Code Playgroud)

而Actor代码是

class MyActor extends Actor {

  override def receive: Receive = {
    case Message => {
       ...
      Await.result(Dataset.create(datasetId), 30 seconds) 
      //Dataset.create returns a Future. Also this method uses an
      //ExecutionContext of its own.
      ...
    }
  }

  override def postStop() = {
    context.system.shutdown()
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我注释掉Await.result部分,该程序将退出.

编辑:
看起来我找到了根本原因.

Dataset.create(...)中使用的ExecutionContext是罪魁祸首.当我使用不使用Futures的同步版本的Dataset.create(...)时,我的应用程序退出.

Dataset.create()使用的ec是这样定义的 …

scala akka

6
推荐指数
1
解决办法
2781
查看次数

在Java/Scala中组织导入的首选样式

我想知道在Java/Scala源代码中组织导入的首选/最常见的样式.我首先遵循java/scala导入的风格,然后是org.净.等等然后com.

import java.util....
import scala.collection...

import org.apache...
import net.liftweb.json

import com.mycompany...
Run Code Online (Sandbox Code Playgroud)

最近,我的一位队友提出了这种方法

- external libraries

- internal libraries

- scala
- java
Run Code Online (Sandbox Code Playgroud)

喜欢

import net.liftweb.json._

import com.mycompany.logging.Logger
import com.mycompany.api.Statsd
...

import scala.util.{ Try, Success, Failure }
import scala.concurrent.{ ExecutionContext, Future, Await }
import java.util.Date
Run Code Online (Sandbox Code Playgroud)

想知道SO人的意见.

马丁会怎么说?

(从而将这个问题置于纯粹意见的范围之外.对这个问题的答案是可以验证的.正如马丁所说,社区也是如此.)

保罗将如何回应?

众所周知,@ extempore已经对Scala代码库进行了大量的提交,只是为了scala在前面添加,util因为在存在名为的空目录时存在某种类型的包加载错误行为util.

显然,这不是一个"软"的问题.

奖金问题:如果有的话,一个人放在哪里_root_

scala

2
推荐指数
1
解决办法
1741
查看次数