我有一个使用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) 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)
具体是代码示例中的提升与非引用拼接的实现?
我有个案例
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中获取日期的最简单方法是什么?
谢谢
考虑这个(有点人为的)例子:
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文件系统上的某种目录,以及TopLevel它AbsChild所属的物理驱动器.所以parent实际上并不是指对象的直接父级(比如包含它的目录),而是引用树中的顶级对象.
在某些应用程序中,我将要处理a List[Obj[A, B]],而不是立即知道它是什么Obj.在这种情况下,即使a TopLevel拥有a 也会很好parent,它应该只返回对自身的引用.这就是我的问题.
定义def …
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) 我已经读过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演员提供的,那么就不需要这样做了.
如果我对或错,请告诉我,以及您对使用阻止服务的建议.
我使用了play-2.2.1的示例app-eventSource开发了一个feed服务器.它工作正常.但是当我在代理服务器nginx后面运行应用程序时,我得到:对此请求的响应是分块的,因此需要发送HTTP 1.1,但这是HTTP 1.0请求.是我的代理服务器转换请求到HTTP 1.0?请帮助解决这个问题......从应用程序的角度来看是否可以解决这个问题......或者nginx更新能解决这个问题吗?
我将输入一组行作为输入并跟踪字长的分布.额外的空白区域(包括输入中的换行符)无关紧要.在输入结束后,输出是基于文本的字长分布直方图:例如:"嘿,你好,你好"
输出: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代码看起来像这样
if (true) {
val a = 1
}
else {
val a = 2
}
print(a)
print(a+100)
Run Code Online (Sandbox Code Playgroud)
的print(a),因为会引发错误a超出范围评估该行当..然后,我怎样可以定义一个val根据条件表达式?有没有人有这个想法?
我有一个关于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,它输出前一个结果.我认为有一些非常有效的方法来做到这一点没有循环,但现在不能想到任何...