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

在具有最大尾随零位数的区间中的整数

Sought是一种有效的算法,它在一个区间中找到唯一的整数,该区间[a, b]在其二进制表示中具有最大的尾随零数(a并且b整数> 0):

def bruteForce(a: Int, b: Int): Int =
  (a to b).maxBy(Integer.numberOfTrailingZeros(_))

def binSplit(a: Int, b: Int): Int = {
  require(a > 0 && a <= b)
  val res = ???
  assert(res == bruteForce(a, b))
  res
}
Run Code Online (Sandbox Code Playgroud)

这里有些例子

bruteForce(  5,   7) ==   6 // binary 110 (1 trailing zero)
bruteForce(  1, 255) == 128 // binary 10000000
bruteForce(129, 255) == 192 // binary 11000000
Run Code Online (Sandbox Code Playgroud)

等等

algorithm scala bit-manipulation

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

使用方法丰富Scala集合

如何foreachWithIndex在Scala集合上添加方法?

这是我到目前为止所能提出的:

implicit def iforeach[A, CC <: TraversableLike[A, CC]](coll: CC) = new {
  def foreachWithIndex[B](f: (A, Int) => B): Unit = {
    var i = 0
    for (c <- coll) {
      f(c, i)
      i += 1
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

Vector(9, 11, 34).foreachWithIndex { (el, i) =>
  println(el, i)
}
Run Code Online (Sandbox Code Playgroud)

引发以下错误:

error: value foreachWithIndex is not a member of scala.collection.immutable.Vector[Int]
Vector(9, 11, 34).foreachWithIndex { (el, i) =>
Run Code Online (Sandbox Code Playgroud)

但是,当我明确应用转换方法时,代码可以正常工作:

iforeach[Int, Vector[Int]](Vector(9, 11, 34)).foreachWithIndex { (el, i) =>
  println(el, i) …
Run Code Online (Sandbox Code Playgroud)

scala implicit-conversion scala-collections enrich-my-library

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

在没有管理员权限的OS X上安装Git Client

我需要在OS X 10.6.6机器上运行git客户端,我没有管理员权限.

现在很遗憾,来自http://code.google.com/p/git-osx-installer/的安装程序没有本地安装选项,因此如果没有管理员帐户,它就无法运行.

什么是安装git的最快/最简单的方法,例如~/bin

注意:虽然我可以从GitHub(我的项目来自)下载zip存档,但我需要能够快速提取新提交,因此这不是一个选项.

Fink没有OS X 10.6的二进制文件,如果没有管理员权限,MacPorts安装程序也无法运行.

git macos

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

斯卡拉.功能太多,课程太多了?

我是Scala的新手,但有一些Java背景.

在编写Scala代码时,以这种样式处理Option参数很有用:

val text = Option("Text")
val length = text.map(s => s.size)
Run Code Online (Sandbox Code Playgroud)

s => s.size据我所知,每一个都带来了新的Function1[A, B].如果我做了8次这样的转换,它将带来8个额外的类.绑定表单时,我非常重视这些片段,所以问题是:

我应该少用它,也许用if-notation代替它,或者类似泛滥对JVM不是很关键,或者Scala编译器可能会做某种魔术?

更新:一个更具体的例子是:

case class Form(name: Option[String], surname: Option[String])
val bindedForm = Form(Option("John"), Option("Smith"))
val person = new Person
bindedForm.name.foreach(a => person.setName(a))
bindedForm.surname.foreach(a => person.setSurname(a))
Run Code Online (Sandbox Code Playgroud)

它会产生两个不同的Function1[String, String]类吗?如果有数百次此类转换怎么办?

scala

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

使用Dispatch执行简单的HTTP GET

以下是浏览器中的有效查询(例如Firefox):

http://www.freesound.org/api/sounds/search/?q=barking&api_key=074c0b328aea46adb3ee76f6918f8fae
Run Code Online (Sandbox Code Playgroud)

产生一个JSON文档:

{
    "num_results": 610, 
    "sounds": [
        {
            "analysis_stats": "http://www.freesound.org/api/sounds/115536/analysis/", 
            "analysis_frames": "http://www.freesound.org/data/analysis/115/115536_1956076_frames.json", 
            "preview-hq-mp3": "http://www.freesound.org/data/previews/115/115536_1956076-hq.mp3", 
            "original_filename": "Two Barks.wav", 
            "tags": [
                "animal", 
                "bark", 
                "barking", 
                "dog", 
                "effects", 
 ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Dispatch 0.9.4执行此查询.这是一个build.sbt:

scalaVersion := "2.10.0"

libraryDependencies += "net.databinder.dispatch" %% "dispatch-core" % "0.9.4"
Run Code Online (Sandbox Code Playgroud)

sbt console,我做以下事情:

import dispatch._
val q = url("http://www.freesound.org/api/sounds/search")
   .addQueryParameter("q", "barking")
   .addQueryParameter("api_key", "074c0b328aea46adb3ee76f6918f8fae")
val res = Http(q OK as.String)
Run Code Online (Sandbox Code Playgroud)

但承诺总是以下列错误完成:

res0: dispatch.Promise[String] = Promise(!Unexpected response status: 301!)
Run Code Online (Sandbox Code Playgroud)

那么我做错了什么?这是API文档,如果有帮助的话.

scala http scala-dispatch

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

缩写@specialized

我记得PaulP显示了一个很酷的技巧来缩短重复的长@specialized序列,但我不再找到原帖了.就像我一样

trait Foo[@specialized(Int, Float, Double, Long, Char, Boolean) A]
trait Bar[@specialized(Int, Float, Double, Long, Char, Boolean) A]
Run Code Online (Sandbox Code Playgroud)

有可能以某种方式对此进行别名......

type SpecDef = ???
trait Foo[SpecDef ??? A]
trait Bar[SpecDef ??? A]
Run Code Online (Sandbox Code Playgroud)

scala

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

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
查看次数