我正在尝试遵循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 in depth"的第一部分,第一部分有两个关于"covariance"和"contrvariance"的句子:
协方差(+ T或?extends T)是指类型可以在继承层次结构中强制转换.
逆变量(-T或?super T)是指类型可以强制继承层次结构.
我已经阅读了一些关于"协方差"和"逆变"的文件,但在这种背景下我无法理解"强迫"和"强迫"这个词.
我有一个 sbt 多项目构建,其中包含两个项目core和mac. 我没有聚合它们的根项目。不幸的是sbt 会自动创建一个。
如何防止发布这个虚拟聚合项目?我得到这样"default-6a1ca6"除了core与mac当我运行sbt publish-local。
我正在寻找类似的东西
autoRoot := false
Run Code Online (Sandbox Code Playgroud)
?
我有一个使用Swing的Scala 2.10.3项目.我有以下catch-22情况:
我可以编译
$ 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.
我想使用宏注释(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) 如果我有
<div><input></input></div>
Run Code Online (Sandbox Code Playgroud)
如何使自动input和包含的宽度div自动与当前显示的文本值一样宽.特别是,当用户编辑输入时,我希望盒子增长和缩小.
我能做的是纯CSS吗?我是否必须倾听事件并更新样式?怎么样?(注意:在这种情况下,字体是单倍间距的,所以可能使它更容易,尽管我对一般解决方案感兴趣).
常见的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) 这可能是由于在覆盖的博客条目由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) 我有一个值列表,并希望将其减少到连续成员之间的差异列表.有没有比我想出的更好的方法(琐碎的例子)?
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) 我有一个Disjunction具有相同类型的 scalaz ,Disjunction[String, String]我只想获得价值,无论它是什么。因此我使用了myDisjunction.fold(indentity, identity)但我想知道,有没有像这样的快捷方式myDisjunction.safeGetBecauseTypesAreEqual()?
scala ×9
sbt ×3
class ×1
collections ×1
constructor ×1
css ×1
html ×1
implicit ×1
jvm ×1
macros ×1
scaladoc ×1
scalaz ×1
type-systems ×1