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

sbt忽略了我的scaladoc设置

我正在尝试遵循scaladoc生成的sbt文档.我有一个多项目(即与子项目的聚合)构建,这是./build.sbt一般设置.我添加了以下示例中的最后一个条目:

scalacOptions in ThisBuild ++= Seq("-deprecation", "-unchecked", "-feature")

scalacOptions in ThisBuild += "-no-specialization"

// API docs
scalacOptions in ThisBuild in (Compile,doc) ++= Seq(
  "-diagrams", "-doc-title", name.value
)
Run Code Online (Sandbox Code Playgroud)

这没有任何效果.scaladoc既不会尝试生成图表,也不会设置主文档标题,因此只会忽略这些设置.同样,如果我添加一个"-foobar"选项,则不会出现错误.

如何解决这个问题(在build.sbt,我不想进入project/Build.scala,谢谢)

scala sbt scaladoc

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

如何理解关于"协方差"和"逆变"的两句话?

我正在阅读"Scala in depth"的第一部分,第一部分有两个关于"covariance"和"contrvariance"的句子:

协方差(+ T或?extends T)是指类型可以在继承层次结构中强制转换.

逆变量(-T或?super T)是指类型可以强制继承层次结构.

我已经阅读了一些关于"协方差"和"逆变"的文件,但在这种背景下我无法理解"强迫"和"强迫"这个词.

type-systems scala

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

防止 sbt 发布自动聚合的根项目

我有一个 sbt 多项目构建,其中包含两个项目coremac. 我没有聚合它们的根项目。不幸的是sbt 会自动创建一个

如何防止发布这个虚拟聚合项目?我得到这样"default-6a1ca6"除了coremac当我运行sbt publish-local

我正在寻找类似的东西

autoRoot := false
Run Code Online (Sandbox Code Playgroud)

?

scala sbt

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

Sbt:使用Java 6编译并使用Java 7运行

我有一个使用Swing的Scala 2.10.3项目.我有以下catch-22情况:

  • 我必须针对Java 6进行编译,因为Scala Swing没有使用Java 7的错误
  • 我必须使用Java 7运行该项目,因为Linux上的OpenJDK 6已损坏(与各种Swing组件崩溃)

我可以编译

$ sbt -java-home /usr/lib/jvm/java-6-openjdk-amd64/ test:products
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行时:

$ sbt run
Run Code Online (Sandbox Code Playgroud)

sbt 认为JVM版本发生了变化,并尝试重新编译所有内容,从而因第一个问题而抛出编译错误.

sbt虽然使用不同的JVM,但我如何说服运行已编译的项目?使用assembly不是一种选择,因为这需要几分钟,我需要做很多事情.


我也尝试切换使用export JAVA_HOME,但这有同样的效果,sbt会尝试重新编译run.

jvm scala sbt

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

检测宏注释正文中的宏注释类型

我想使用宏注释(macro-paradise,Scala 2.11)在带注释的特征的伴随对象中生成合成特征.例如,给定一些STM抽象:

trait Var[Tx, A] {
  def apply()         (implicit tx: Tx): A
  def update(value: A)(implicit tx: Tx): Unit
}
Run Code Online (Sandbox Code Playgroud)

我想定义一个宏注释txn,以便:

@txn trait Cell[A] {
  val value: A
  var next: Option[Cell[A]]
}
Run Code Online (Sandbox Code Playgroud)

将重新合成为:

object Cell {
  trait Txn[-Tx, A] {
    def value: A
    def next: Var[Option[Cell.Txn[Tx, A]]] // !
  }
}
trait Cell[A] {
  val value: A
  var next: Option[Cell[A]]
}
Run Code Online (Sandbox Code Playgroud)

我得到了伴侣对象,内在特征和value成员.但很明显,为了让next成员拥有扩充类型(而不是Option[Cell[A]]我需要Option[Cell.Txn[Tx, A]]),我需要模式匹配类型树并重写它.

例如,假设我next在原始Cell特征中找到值定义,如下所示:

case v @ …
Run Code Online (Sandbox Code Playgroud)

macros scala

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

自动使<input>(并包含<div>)与内容一样宽

如果我有

<div><input></input></div>
Run Code Online (Sandbox Code Playgroud)

如何使自动input和包含的宽度div自动与当前显示的文本值一样宽.特别是,当用户编辑输入时,我希望盒子增长和缩小.

我能做的是纯CSS吗?我是否必须倾听事件并更新样式?怎么样?(注意:在这种情况下,字体是单倍间距的,所以可能使它更容易,尽管我对一般解决方案感兴趣).

html css

4
推荐指数
2
解决办法
747
查看次数

为什么我可以将方法标记为隐式但不是构造函数?

常见的Enrich-My-Library模式似乎是这样的

class Foo(value: Int)

implicit def int2Foo(i: Int) = new Foo(i)
Run Code Online (Sandbox Code Playgroud)

为什么不能implicit像这样只添加到构造函数本身

class Foo implicit (value: Int)
Run Code Online (Sandbox Code Playgroud)

考虑到构造函数不仅仅是一个带有一些额外限制的方法?

令人惊讶的是,以下确实有效:

class Foo(value: Int) {
  implicit def this(a: String) = this(a.toInt)
}
Run Code Online (Sandbox Code Playgroud)

constructor scala class implicit enrich-my-library

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

在不使用延迟val的情况下避免特征初始化中的NPE

这可能是由于在覆盖的博客条目由Jesse Eichar,我仍然无法弄清楚如何纠正以下不诉诸懒丘壑,使得NPE是固定的:

特定

trait FooLike { def foo: String }
case class Foo(foo: String) extends FooLike

trait Sys {
  type D <: FooLike
  def bar: D
}

trait Confluent extends Sys {
  type D = Foo
}

trait Mixin extends Sys {
  val global = bar.foo
}
Run Code Online (Sandbox Code Playgroud)

第一次尝试:

class System1 extends Mixin with Confluent {
  val bar = Foo("npe")
}

new System1  // boom!!
Run Code Online (Sandbox Code Playgroud)

第二次尝试,改变mixin顺序

class System2 extends Confluent with Mixin {
  val bar = Foo("npe") …
Run Code Online (Sandbox Code Playgroud)

scala nullpointerexception

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

获取列表成员之间的差异

我有一个值列表,并希望将其减少到连续成员之间的差异列表.有没有比我想出的更好的方法(琐碎的例子)?

val l1 = List(1,2,3,4,5,6)

val diffs = (l1 zip l1.drop(1)).map{case (x,y) => y - x}.sum
Run Code Online (Sandbox Code Playgroud)

collections scala

3
推荐指数
2
解决办法
1892
查看次数

Disjunction.fold(identity, identity) 有快捷方式吗?

我有一个Disjunction具有相同类型的 scalaz ,Disjunction[String, String]我只想获得价值,无论它是什么。因此我使用了myDisjunction.fold(indentity, identity)但我想知道,有没有像这样的快捷方式myDisjunction.safeGetBecauseTypesAreEqual()

scala scalaz

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