小编Mic*_*jac的帖子

如何访问在websocket中创建的actor?

我有一个使用play 2.3 web socket actor功能创建的websocket.如何访问创建的actor以在其他函数中发送消息?

def websocket: WebSocket[JsValue, JsValue] = 
  WebSocket.acceptWithActor[JsValue, JsValue] {
    req => out => Props(new MyActor(out))
  }
Run Code Online (Sandbox Code Playgroud)

scala websocket akka playframework playframework-2.3

4
推荐指数
1
解决办法
781
查看次数

Scala Quasiquote提升

Quasiquotes的Scala文档在解释提升时提到了这一点:

也可以结合提升和非提示拼接:

 scala> val ints = List(1, 2, 3)
 scala> val f123 = q"f(..$ints)"
 f123: universe.Tree = f(1, 2, 3)

 scala> val intss = List(List(1, 2, 3), List(4, 5), List(6))
 scala> val f123456 = q"f(...$intss)"
 f123456: universe.Tree = f(1, 2, 3)(4, 5)(6)
Run Code Online (Sandbox Code Playgroud)

具体是代码示例中的提升与非引用拼接的实现?

scala scala-quasiquotes

4
推荐指数
1
解决办法
252
查看次数

如何使用JSON写入将日期写入ISO 8601格式?

我有个案例

import java.sql.Date
case class GetMilestoneLanguage(
                               ...
                   due_date: Option[Date],
                                ...
                   )
object GetMilestoneLanguage {
  implicit val writes = Json.writes[GetMilestoneLanguage]
}
Run Code Online (Sandbox Code Playgroud)

它以UTC格式输出JSON - 我需要它是iso 8601.我不使用Joda时间.

在iso 8601中获取日期的最简单方法是什么?

谢谢

json scala date iso8601 playframework

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

在这个使用泛型的例子中,asInstanceOf有什么问题吗?

考虑这个(有点人为的)例子:

abstract class Obj[A, B] {
    def id: Long
    def parent: B
}

abstract class TopLevel[A] extends Obj[A, A] {
    def parent: A = this.asInstanceOf[A] // How terrible is this?
}

abstract class AbsChild[A, B] extends Obj[A, B] {
    def parent: B
}

case class Top(id: Long) extends TopLevel[Top]

case class Child(id: Long, parent: Top) extends AbsChild[Child, Top]
Run Code Online (Sandbox Code Playgroud)

为了描绘更好的图片,想象一下AbsChild文件系统上的某种目录,以及TopLevelAbsChild所属的物理驱动器.所以parent实际上并不是指对象的直接父级(比如包含它的目录),而是引用树中的顶级对象.

在某些应用程序中,我将要处理a List[Obj[A, B]],而不是立即知道它是什么Obj.在这种情况下,即使a TopLevel拥有a 也会很好parent,它应该只返回对自身的引用.这就是我的问题.

定义def …

generics scala

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

如何在Scala中对大写和小写字符串进行排序

Scala中有一个字符串列表.让我们假设这些字符串只包含英文字母(小写和大写).以下是示例清单:

val l1 = List("ab","aa", "bc","Aa", "Ab", "Ba", "BB")
Run Code Online (Sandbox Code Playgroud)

当我们用以下代码对它进行排序时:

l1.sortWith(_ < _)  
Run Code Online (Sandbox Code Playgroud)

我们会收到:

List(Aa, Ab, BB, Ba, aa, ab, bc)
Run Code Online (Sandbox Code Playgroud)

所以这种排序使用字母之间的以下关系:

A < B < C < ... < a < b < c ...
Run Code Online (Sandbox Code Playgroud)

我们也可以使用:

l1.sortWith(_.toLowerCase < _.toLowerCase)
Run Code Online (Sandbox Code Playgroud)

接收:

List(aa, Aa, ab, Ab, Ba, BB, bc)
Run Code Online (Sandbox Code Playgroud)

所以现在字母之间的关系是:

(a=A) < (b=B) < (c=C) ...
Run Code Online (Sandbox Code Playgroud)

但是如何使用以下字母顺序在Scala中对它们进行排序?:

a < A < b < B < c < C ...
Run Code Online (Sandbox Code Playgroud)

所以结果应该是;

List(aa, ab, Aa, Ab, bc, Ba, BB)
Run Code Online (Sandbox Code Playgroud)

sorting scala

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

在Play中,每个请求都会产生一个Akka演员吗?

我已经读过Play是建立在Akka上的,所以我想知道,对于每个传入的请求,是否会产生一个演员服务.

以此控制器操作为例:

def upload = Action(parse.multipartFormData) { implicit request =>
  request.body.file("picture").map { picture =>
    val client = new AmazonS3Client
    client.putObject("my-bucket", picture.filename, picture.ref.file)
  }.getOrElse {
    BadRequest("File missing")
  }
}
Run Code Online (Sandbox Code Playgroud)

上传是同步发生的,而且我经常看到一些例子试图在Future中包装这样的代码块.我认为如果这个请求是由Akka演员提供的,那么就不需要这样做了.

如果我对或错,请告诉我,以及您对使用阻止服务的建议.

scala blocking akka playframework playframework-2.0

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

HTTP 1.0请求是否在play框架2.2.1中提供了分块响应

我使用了play-2.2.1的示例app-eventSource开发了一个feed服务器.它工作正常.但是当我在代理服务器nginx后面运行应用程序时,我得到:对此请求的响应是分块的,因此需要发送HTTP 1.1,但这是HTTP 1.0请求.是我的代理服务器转换请求到HTTP 1.0?请帮助解决这个问题......从应用程序的角度来看是否可以解决这个问题......或者nginx更新能解决这个问题吗?

nginx playframework playframework-2.2

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

斯卡拉印刷字长直方图斯卡拉

我将输入一组行作为输入并跟踪字长的分布.额外的空白区域(包括输入中的换行符)无关紧要.在输入结束后,输出是基于文本的字长分布直方图:例如:"嘿,你好,你好"

输出:1 - 0,2 - 1,3 - 5,4 - 1,5 - 0

where(第一个字符是单词的长度,第二个字符是该长度的单词).我已经写了

val lines = scala.io.Source.stdin.getLines
val words = lines.flatMap(_.split("\\W+"))
Run Code Online (Sandbox Code Playgroud)

我想组合相同长度的单词,然后将它们存储在迭代器或映射中

val list2 = words.groupby(e.length => e.length).mapValues(_.length) 
Run Code Online (Sandbox Code Playgroud)

没有给我想要的结果.有什么建议?

scala flatmap

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

在Scala中,如何在`if块'中定义`val`?

我的Scala代码看起来像这样

if (true) {
  val a = 1
}
else {
  val a = 2
}

print(a)
print(a+100)
Run Code Online (Sandbox Code Playgroud)

print(a),因为会引发错误a超出范围评估该行当..然后,我怎样可以定义一个val根据条件表达式?有没有人有这个想法?

functional-programming scala

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

scala匹配从布尔列表到求和Int列表

我有一个关于scala/spark列表匹配的一般问题.假设我有以下形式的布尔列表:

List(true, false, false ,true, true)
Run Code Online (Sandbox Code Playgroud)

我希望将此布尔列表转换为:

List(1, 1, 1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

这样每次有一个true时,List加1,每次有一个false,它输出前一个结果.我认为有一些非常有效的方法来做到这一点没有循环,但现在不能想到任何...

scala

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