如何确定某个类型是否为单例?
case object Foo
case class Bar(i: Int)
def isSingleton[A](implicit t: reflect.ClassTag[A]): Boolean = ???
assert( isSingleton[Foo.type])
assert(!isSingleton[Bar ])
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) 是否有现有的功能可以改变Range生产另一种产品Range,例如
val r = 1 to 5
val s = r.map(_ + 2) // produces Vector(3, 4, 5, 6, 7)
Run Code Online (Sandbox Code Playgroud)
我想得到3 to 7.
我遇到了"fatal: Not a git repository (or any of the parent directories): .git"问题,虽然我在一个有效的git目录中.
我有一个项目根目录.git.我有一个子目录,site它有一个单独的sbt文件,用于构建scaladocs并使用gh-pages插件将它们推送到我项目的gh-pages分支.
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
$ ls -la ..
total 359148
...
drwxr-xr-x 8 myname myname 4096 Jun 18 22:41 .git
$ sbt ghpages-push-site
...
[error] fatal: Not a git repository (or any of the parent directories): .git
Run Code Online (Sandbox Code Playgroud)
那我错过了什么?我在一个有效的git目录中(如git status确认).
我也从原点进行了新的结账,没有运气.我跑进git init了site子目录.没有运气,这个错误只是持续存在.
编辑:奇怪的是,我有一个不同的GitHub项目具有完全相同的布局和sbt构建文件,这里不会发生问题.这有效,但事实并非如此.是否有可能与后一个项目使用不同的组织有关?
我正在使用Jekyll,我有两个独立的存储库,我想我最近更新了一个.上次我渲染我的博客时,一切都很好.现在就是这样:
$ jekyll serve --watch
WARN: Unresolved specs during Gem::Specification.reset:
redcarpet (~> 3.1)
jekyll-watch (~> 1.1)
classifier-reborn (~> 2.0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
/var/lib/gems/2.1.0/gems/jekyll-2.5.2/bin/jekyll:21:in `block in <top (required)>': cannot load such file -- jekyll/version (LoadError)
from /var/lib/gems/2.1.0/gems/mercenary-0.3.5/lib/mercenary.rb:18:in `program'
from /var/lib/gems/2.1.0/gems/jekyll-2.5.2/bin/jekyll:20:in `<top (required)>'
from /usr/local/bin/jekyll:23:in `load'
from /usr/local/bin/jekyll:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)
到底他妈发生了什么?似乎Jekyll或Gem自杀了.我怎样才能解决这个问题?
如何防止Jekyll或Ruby搞乱全局安装(我认为这是发生了什么 - 这两个博客并不是彼此独立的)?我可以确保每个Jekyll目录都与其他目录隔离,就像在任何下降编程语言/构建系统中一样吗?
编辑.我随机跑了sudo gem cleanup && bundle install.这似乎已经卸载了所有的宝石(!?!),然后重新安装它们.现在我得到一个不同的错误:
WARN: Unresolved specs during Gem::Specification.reset:
listen (~> 2.7) …Run Code Online (Sandbox Code Playgroud) 我有一个Disjunction具有相同类型的 scalaz ,Disjunction[String, String]我只想获得价值,无论它是什么。因此我使用了myDisjunction.fold(indentity, identity)但我想知道,有没有像这样的快捷方式myDisjunction.safeGetBecauseTypesAreEqual()?
我为每个模块都有一个多项目构建scalaVersion := "2.11.8"。
我想在不接触构建文件的情况下运行 Scala 2.12.0-RC1 test。publish-local我认为以下方法会起作用:
$ sbt
> set scalaVersion in ThisBuild := "2.12.0-RC1"
> test
Run Code Online (Sandbox Code Playgroud)
但这不会改变所使用的 Scala 版本,sbt 仍然使用 Scala 2.11.8 进行编译。这仅适用于单个模块构建(没有project定义)。
如何scalaVersion从 sbt 控制台有效覆盖所有子模块?
添加Scala 2.12 .travis.yml为我产生一个新问题,因为现在构建将在Java 6下失败:
language: scala
scala:
- 2.12.0
- 2.11.8
- 2.10.6
jdk:
- oraclejdk8
- openjdk6
Run Code Online (Sandbox Code Playgroud)
如何解决此问题以排除组合(scala 2.12.0,jdk opendjk6)?
查看文档,我不清楚ffmpeg是否允许我以相反的顺序将图像序列转换为视频,例如使用以下序列:
frame-1000.jpg
frame-999.jpg
frame-998.jpg
...
frame-1.jpg
Run Code Online (Sandbox Code Playgroud)
是否有可能为帧索引提供"步进方向"?
我使用Scala 2.9.1.我有一个简单的scala"解释器":
import scala.tools.nsc.interpreter.IMain
import scala.tools.nsc.interpreter.Results.Result
import scala.tools.nsc.interpreter.Results.Success
object App {
def main(args: Array[String]) {
val interpreter = new IMain
val result:Result = interpreter.interpret(args(0))
result.toString() match {
case "Success" =>
{
var success = result.asInstanceOf[Success]
println(success.productElement(0))
};
case _ => println("very bad result");
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它(maven)时,我得到:
[ERROR] /home/koziolek/workspace/dsi/src/main/scala/pl/koziolekweb/scala/dsi/App.scala:15: error: not found: type Success
[INFO] var success = result.asInstanceOf[Success]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,编译器表示没有类型Success,尽管我导入了它.
scala ×8
sbt ×2
collections ×1
ffmpeg ×1
gem ×1
git ×1
github ×1
interpreter ×1
jekyll ×1
reflection ×1
ruby ×1
scalaz ×1
travis-ci ×1