小编the*_*met的帖子

为什么(复制)附加到Scala中的Seq被定义为:+而不仅仅是在Set和Map中?

Scala的Map和Set定义了一个+运算符,该运算符返回一个数据结构的副本,并附加一个元素.Seq表示等效运算符:+.

这种不一致有什么理由吗?

scala scala-collections

25
推荐指数
2
解决办法
2万
查看次数

播放Json:将读取[T]转换为读取[Seq [T]]而不暗示

我有一个Reads[T].我想解析一个Json对象,该对象应该是一个数组T.有没有一种简单的方法来获得一个Reads[Seq[T]] 没有定义我Reads[T]的隐含?基本上,我正在寻找一个获取Reads[T]和返回的函数Reads[Seq[T]].

我遇到过Reads.TraversableReads,并且认为我可以明确地传递它需要的隐式阅读器,但是这个功能也需要一个CanBuildForm[...]听起来不太有趣的功能.

json scala playframework-2.1

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

标记导入用于IntelliJ

我有一个隐式函数的import语句,IntelliJ认为由于一个bug而没有使用它.每当我执行该Organize Imports命令时,IntelliJ都会删除该导入行.有没有办法告诉IntelliJ单独留下这条线?

scala intellij-idea

10
推荐指数
1
解决办法
1394
查看次数

如何通过Build.scala将javaOptions传递给"play run"

我想-Dconfig.file=conf/dev.conf在使用run命令时通过Build.scala 将参数传递 给我的应用程序.

我试图把这样的东西放在我的Build.scala:

val mySettings = Seq(
  (javaOptions in run) ++= Seq("-Dconfig.file=conf/dev.conf")
)

val main = play.Project(appName, appVersion, appDependencies).settings(
  mySettings: _*
)
Run Code Online (Sandbox Code Playgroud)

但它没有 - 从我收集的内容来看,这是因为当我使用run时,SBT不会分叉新的JVM.除了设置环境变量之外的任何变通方法?

sbt playframework

8
推荐指数
1
解决办法
2987
查看次数

在方法中标记隐含的参数

我有一个方法调用一些其他方法,使用隐式类型Foo.我想在Foo中隐含f.我是这样做的:

def myMethod(a: Int, f: Foo) = {
  implicit val implicitF = f;
  somethingThatNeedsFoo(a) 
}
Run Code Online (Sandbox Code Playgroud)

我不想f在myMethod的签名中标记隐式,因为Foos并不隐含在使用myMethod的上下文中.我的问题:与使用临时变量相比,是否有更惯用(或简洁)的方法来实现这种效果?

scala implicit

7
推荐指数
2
解决办法
686
查看次数

将通用追加函数迁移到Scala 2.13集合

我有以下扩展类,将扩展类添加myAppend到任何方法SeqLike

implicit class WithAppend[A, R](s: SeqLike[A, R]) extends AnyVal {
  def myAppend(i: A)(implicit cbf: CanBuildFrom[R, A, R]): R = s :+ i
}
Run Code Online (Sandbox Code Playgroud)

如何将该代码移植到Scala 2.13并保留类似的性能特征?如果扩展类可以保持AnyVal

我尝试过的几件事:

class Extends1[R, S <: IsSeq[R]](c: R, isSeq: S) {
  def myAppend(a: isSeq.A): R = (isSeq(c) :+ a).asInstanceOf[R]
}
Run Code Online (Sandbox Code Playgroud)

但是asInstanceOf令人失望-它甚至安全吗?

我可以做:

class Extends3[S[_], A](c: SeqOps[A, S, S[A]]) {
  def myAppend(a: A): S[A] = c :+ a
}
Run Code Online (Sandbox Code Playgroud)

但是现在我们被限于表单的集合,S[A]而Scala 2.12代码可以接受任何形式R

scala scala-2.13

7
推荐指数
1
解决办法
162
查看次数

使用无效数据预填充AngularJS表单

我的模型包含一些未通过表单验证的数据(例如来自服务器的无效电子邮件地址).我仍然想向用户显示这个无效的模型数据,以便他们有机会修复它.

最小的例子:

  <form ng-init="email='foo'">
    <input type="email" ng-model="email"></input>
  </form>
Run Code Online (Sandbox Code Playgroud)

如何获取输入以显示初始无效模型值?

JS小提琴:http://jsfiddle.net/TwzXV/4/

javascript angularjs

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

通过滚动更新从 CloudFront 提供修订文件

我们有一个 Web 应用程序在弹性负载均衡器后面的两台服务器上运行。我们每天多次部署它的新版本。每次发布新版本时,我们都会使用不同的 JS 和 CSS 文件名来避免缓存问题。例如,在一个版本中我们有 app-v1.js,而在下一个版本中我们有 app-v2.js。

我们希望使用 CloudFront 以 gzip 格式提供这些资源(前提是浏览器提供了适当的 Accept-Encoding 标头)。

我们探索了两种操作模式:

  1. 具有 S3 起源的 Cloudfront:似乎没有此功能(无论对象是否压缩,都不会提供基于标头的压缩版本)。

  2. 具有自定义源的 Cloudfront:无法应对滚动更新:当我们部署到服务器 A 时,我们的 HTML 中将会引用 app-v2.js。由于它尚未缓存在 CloudFront 中,CloudFront 将从我们的服务器请求它,并且可能会访问尚未收到更新的服务器,从而提供 404。

最好的做法是什么?我们是否遗漏了什么?我们考虑建立一个 nginx 代理服务器,以便它可以为 Cloudfront 压缩来自 S3 的内容。它会是这样的:

CloudFront --> nginx 代理 --> S3

我们可以做到这一点,但希望我们可以避免维护这一部分。有什么建议吗?

amazon-web-services amazon-cloudfront

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

使用密封特性作为地图的关键

我试图从密封特征的实例定义一个地图.在下面的代码中,Scala似乎将键类型推断为Product with Serializable with Day:

object Test extends App {
  sealed trait Day
  case object Sunday extends Day
  case object Monday extends Day
  case object Tuesday extends Day

  val m: Map[Day, Int] = Map(Sunday -> 17, Monday -> 4).withDefaultValue(0)
}
Run Code Online (Sandbox Code Playgroud)

这不编译:

Test.scala:7: error: type mismatch;
 found   : scala.collection.immutable.Map[Product with Serializable with Test.Day,Int]
 required: Map[Test.Day,Int]
Note: Product with Serializable with Test.Day <: Test.Day, but trait Map is invariant in type A.
You may wish to investigate a wildcard type …
Run Code Online (Sandbox Code Playgroud)

scala traits

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

玩光滑和异步 - 这是竞争条件吗?

阅读Play-Slick DBAction代码,我认为此代码可能包含竞争条件:

object DBAction{
  // snip

  def apply(r: (RequestWithDbSession) => Result)(implicit app:Application) = {
    Action { implicit request => 
      AsyncResult {
        DB.withSession{ s:scala.slick.session.Session =>
          Future(r( RequestWithDbSession(request,s) ))(executionContext)
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

该函数r在将来withSession返回Future [Result]并调用之后运行session.close().这段代码中是否存在竞争条件?

scala playframework play-slick

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