小编0__*_*0__的帖子

确保ScalaTest不会并行运行

如何确保最新的测试不能并行运行?在0.12之前,我有一个sbt设置:

parallelExecution in Test := false
Run Code Online (Sandbox Code Playgroud)

较新的版本引入了一些复杂的机制.这个更简单,旧的方式仍然适用于0.13吗?

在测试期间,我不希望任何东西并行运行.

scala sbt scalatest

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

存在类型或类型参数绑定失败

我有一个F-bounded类型Sys:

trait Sys[S <: Sys[S]]
Run Code Online (Sandbox Code Playgroud)

以及将其作为类型参数的一些特征:

trait Foo[S <: Sys[S]]
Run Code Online (Sandbox Code Playgroud)

假设我有一个方法可以调用Foo:

def invoke[S <: Sys[S]](foo: Foo[S]) = ()
Run Code Online (Sandbox Code Playgroud)

假设我有一个模型更新类型,以及一个带有以下内容的子类型Foo:

sealed trait Update
case class Opened[S <: Sys[S]](foo: Foo[S]) extends Update
Run Code Online (Sandbox Code Playgroud)

用于注册模型观察者的辅助函数:

def observe(pf: PartialFunction[Update, Unit]) = ()
Run Code Online (Sandbox Code Playgroud)

现在以下失败:

observe {
  case Opened(foo) => invoke(foo)
}
Run Code Online (Sandbox Code Playgroud)

<console>:16: error: inferred type arguments [Any] do not conform to method invoke's
                     type parameter bounds [S <: Sys[S]]
                case Opened(foo) => invoke(foo)
                                    ^
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决部分功能,如Sys,Foo …

scala pattern-matching existential-type type-bounds bounded-quantification

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

定义 scaladoc 宏以在伴随对象中重用

我试图了解scaladoc 宏 是如何工作的。例如

/** $DESCR
  *
  * @define DESCR
  * A `Consumer` simplifies resource management...
  *
  * @define KEY
  * the key type
  *
  * @define VALUE
  * the value type
  */
object Consumer {
  /** Creates a new consumer
    *
    * @tparam A       $KEY
    * @tparam B       $VALUE
    */
  def apply[A, B](): Consumer[A, B] = ???
}

/** $DESCR
  *
  * @tparam A $KEY
  * @tparam B $VALUE
  */
trait Consumer[-A, +B]
Run Code Online (Sandbox Code Playgroud)

我的印象是,这应该生成一个文档,其中包含 trait 和伴随对象的描述A …

scala scaladoc

5
推荐指数
0
解决办法
273
查看次数

在运行时从 Scala 源代码创建可序列化对象

要将 Scala 嵌入为“脚本语言”,我需要能够将文本片段编译为简单的对象,例如Function0[Unit]可以序列化到磁盘和从磁盘反序列化,并且可以加载到当前运行时并执行的对象。

我该怎么办?

比如说,我的文本片段是(纯假设的):

Document.current.elements.headOption.foreach(_.open())
Run Code Online (Sandbox Code Playgroud)

这可能包含在以下完整文本中:

package myapp.userscripts
import myapp.DSL._

object UserFunction1234 extends Function0[Unit] {
  def apply(): Unit = {
    Document.current.elements.headOption.foreach(_.open())
  }
}
Run Code Online (Sandbox Code Playgroud)

接下来是什么?我应该用它IMain来编译这段代码吗?我不想使用普通的解释器模式,因为编译应该是“上下文无关的”,而不是累积请求。

我需要阻止编译的是我猜二进制类文件?在这种情况下,序列化是直接的(字节数组)。然后我将如何将该类加载到运行时并调用该apply方法?

如果代码编译成多个辅助类会怎样?上面的例子包含一个闭包_.open()。如何确保将所有这些辅助内容“打包”到一个对象中以进行序列化和类加载?


注意:鉴于 Scala 2.11 即将发布并且编译器 API 可能已更改,我很高兴收到有关如何在 Scala 2.11 上解决此问题的提示

interpreter scala compilation

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

让sbt在类路径上放置javadoc和依赖源

使用托管依赖项时,我可以告诉sbt下载javadoc和源代码:

"mygroup" % "mymodule" % "myversion" withJavadoc() withSources()
Run Code Online (Sandbox Code Playgroud)

但是这些jar似乎不在运行时类路径上?

我想做的是从我的应用程序访问javadocs和源代码.我可以将这些罐子显示为托管资源,这样我就能做到

ClassLoader.getSystemClassLoader.getResource("/my/package/MyDependency.scala")
Run Code Online (Sandbox Code Playgroud)

resources scala classpath sbt

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

摆脱 Inkscape 生成的 SVG 中的 viewBox 转换

我有一个与此类似的问题。也就是说,我有一个由 Inkscape 创建的 SVG 文件,并且在我想要摆脱的路径上有额外的转换。

现在不再有变换矩阵,而是有不同类型的变换。例如,标题是这样的:

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.0"
   width="32"
   height="32"
   viewBox="0 0 16.146082 22.465583"
   id="svg2"
   xml:space="preserve"
   ...
</svg>
Run Code Online (Sandbox Code Playgroud)

显然,这种混乱被解释为某种平移和缩放。如果我删除该viewBox属性,路径会缩小并显示在左侧一点。因此,如果我只是复制路径定义,我的图像不是 32 x 32,而是更小。

如何展平以某种方式引入的变换,viewBox以便将其集成到显式路径坐标中?

svg inkscape

5
推荐指数
2
解决办法
6924
查看次数

如何在Jekyll博客中包含视频标签/ mp4视频

不是在寻找一种链接到Youtube的方法.我想引用一个自托管的mp4文件.

我已经有{% audio my-file.mp3 %}工作了.

我正在寻找一个等价物{% video my-file.mp4 %}.

如果我<video ... />直接使用,我会在my-text.md中收到错误"Liquid exception:Unknown tag'video'".


编辑:我认为有一个现有的Octopress插件.但是如何安装/让Jekyll知道?

video html5 jekyll octopress

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

启用Java Swing日志记录(密钥发送)

我需要在Swing应用程序中调试键事件调度.我认为以下就足够了:

val eventLog = PlatformLogger.getLogger("java.awt.event.Component")
eventLog.setLevel(PlatformLogger.Level.ALL)
val focusLog = PlatformLogger.getLogger("java.awt.focus.DefaultKeyboardFocusManager")
focusLog.setLevel(PlatformLogger.Level.ALL)
Run Code Online (Sandbox Code Playgroud)

但没有任何反应.(记录器报告它们已启用,但我看不到任何文本输出).我是否需要在PrintStream某处配置以查看日志消息?

java swing focus keyevent dispatch

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

IntelliJ:在伴随对象和类之间跳转

在 IntelliJ IDEA 中,是否有键盘快捷键或导航快捷键可以在 Scala 伴侣object和伴侣之间跳转class

scala intellij-idea

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

通过砖墙驾驶单件类型

这是一个非常简洁的版本:

case class Brickwall[A](otherSide: A)
trait Monoman { def me(m: this.type): Unit }

def test(m: Monoman): Unit = m.me(Brickwall(m).otherSide)

-> error: type mismatch;
 found   : Monoman
 required: m.type
Run Code Online (Sandbox Code Playgroud)

愚蠢的砖墙不让我通过.任何想法如何可能?秘密斯卡拉隧道的影响?希望...

types scala path-dependent-type

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