小编Ben*_*man的帖子

Scala中有相当于SuppressWarnings的内容吗?

我想知道scala是否有相当于java的@SuppressWarnings可以应用于函数或任何忽略函数发出的任何弃用警告[1]?

1:在我的情况下的相关警告是:method stop in class Thread is deprecated: see corresponding Javadoc for more information.我知道停止的问题,但仍有一些情况由于遗留代码我们必须使用它.

scala suppress-warnings

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

如何在project/plugins.sbt和project/Build.scala之间共享版本值?

我想在sbtPlugin和构建的其余部分之间共享一个公共版本变量

这是我正在尝试的:

project/Build.scala:

object Versions {
  scalaJs = "0.5.0-M3"
}
object MyBuild extends Build {
  //Use version number
}
Run Code Online (Sandbox Code Playgroud)

plugins.sbt:

addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % Versions.scalaJs)
Run Code Online (Sandbox Code Playgroud)

结果是

plugins.sbt:15: error: not found: value Versions
addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % Versions.scalaJs)
Run Code Online (Sandbox Code Playgroud)

有没有办法plugins.sbt在构建的其余部分之间共享版本号规范,例如project/Build.scala

sbt

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

如何找到导致Scalac编译器崩溃的源文件

我正在将大型项目升级到2.10.4到2.11.4.我有一个编译器崩溃,无论如何显示导致崩溃的源文件的名称?我能够通过'last everitt/compile:compile'获得完整的跟踪

我将恢复擦除项目的大块以二进制搜索崩溃的原因.

这是跟踪btw:

java.lang.NullPointerException
    at scala.tools.nsc.typechecker.NamesDefaults$class.baseFunBlock$1(NamesDefaults.scala:130)
    at scala.tools.nsc.typechecker.NamesDefaults$class.transformNamedApplication(NamesDefaults.scala:375)
    at scala.tools.nsc.Global$$anon$1.transformNamedApplication(Global.scala:450)
    at scala.tools.nsc.typechecker.NamesDefaults$class.transformNamedApplication(NamesDefaults.scala:326)
    at scala.tools.nsc.Global$$anon$1.transformNamedApplication(Global.scala:450)
    at scala.tools.nsc.typechecker.Typers$Typer.tryNamesDefaults$1(Typers.scala:3298)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3367)
    at scala.tools.nsc.typechecker.Typers$Typer.tryNamesDefaults$1(Typers.scala:3353)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3367)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$tryTypedApply$1$1.apply(Typers.scala:4404)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$tryTypedApply$1$1.apply(Typers.scala:4404)
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:689)
    at scala.tools.nsc.typechecker.Typers$Typer.tryTypedApply$1(Typers.scala:4404)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4449)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4484)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5242)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5259)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5295)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5322)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5269)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5273)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3094)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgWithFormal$1(PatternTypers.scala:112)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115)
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:42)
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:40)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.runtime.Tuple2Zipped$.map$extension(Tuple2Zipped.scala:40)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgsForFormals(PatternTypers.scala:115)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:107)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3384)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3409)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$tryTypedApply$1$1.apply(Typers.scala:4404)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$tryTypedApply$1$1.apply(Typers.scala:4404)
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:676)
    at …
Run Code Online (Sandbox Code Playgroud)

scala sbt scalac

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

针对编译器错误的单元测试打字稿

Typescript 中是否有库或某种形式的内置支持来编写单元测试来断言某些代码无法编译?如果还可以测试精确的错误消息/代码,那就太好了。

例如,我想断言以下代码:

expect(tsErrorCode`const x="a";const y:number=x`).toBe("TS2322")
Run Code Online (Sandbox Code Playgroud)

或者

expect(tsCompiles`const x="a";const y:number=x`).toBeFalsy()
Run Code Online (Sandbox Code Playgroud)

unit-testing typescript

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

启用迁移警告

我将一个2.7.7 scala代码库移植到2.8,并想知道是否有一个编译器选项来显示迁移通知?我被可变序列的行为改变所困扰,该序列具有以下迁移通知[1],但是当我构建项目时它没有显示任何内容(我已经启用了弃用和未检查的警告)

1: @migration(2, 8, "As of 2.8, this operation creates a new map. To add an element as a\n"+ "side effect to an existing map and return that map itself, use +=." )

warnings scala scala-2.8

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

在scala中的另一个线程上执行一个简单的任务

我想知道是否有一种方法可以在scala中的另一个线程上执行非常简单的任务,而这些任务没有很多开销?

基本上我想创建一个可以处理执行任意数量任务的全局"执行器".然后我可以使用执行程序来构建其他构造.

此外,如果客户端不必考虑阻塞或非阻塞因素,那将是很好的.

我知道scala actor库是建立在Doug Lea FJ之上的,而且他们在有限的程度上支持我想要完成的事情.但是根据我的理解,我将不得不预先分配一个'Actor Pool'来完成.

我想避免为此创建一个全局线程池,因为据我所知,它在细粒度并行性方面并不是那么好.

这是一个简单的例子:

import concurrent.SyncVar
object SimpleExecutor {
  import actors.Actor._
  def exec[A](task:  => A) : SyncVar[A] = {
    //what goes here?
    //This is what I currently have
    val x = new concurrent.SyncVar[A]
    //The overhead of making the actor appears to be a killer
    actor {
      x.set(task)
    }
    x
  }
  //Not really sure what to stick here
  def execBlocker[A](task: => A) : SyncVar[A] = exec(task)

}
Run Code Online (Sandbox Code Playgroud)

现在使用exec的一个例子:

object Examples {
  //Benchmarks a task
  def …
Run Code Online (Sandbox Code Playgroud)

parallel-processing concurrency scala fork-join actor

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