小编geo*_*try的帖子

如何在sbt中的子模块中继承非托管依赖项?

我有一个看起来像这样的项目,使用sbt 0.13.2:

base
 - project
   - Build.scala
   - plugins.sbt
 - lib
   - unmanaged jar #1
   - unmanaged jar #2
 - core
    - src
      - .......
 - clp
    - src 
      - .......
 - server
    - src
      - ......
Run Code Online (Sandbox Code Playgroud)

其中core包含公共代码,clp并且server是两个依赖的相关项目core.

我正试图找到合适的mojo,Build.scala以便所有这三个模块都依赖于它base/lib.目前我lib在每个模块中使用符号链接dir 作弊,但我想在没有符号链接的情况下自动完成.

这是一个Build.scala文件示例- 我应该如何修改它以使依赖项工作?

import sbt._
import Keys._

object RootBuild extends Build {
  lazy val buildSettings = Defaults.defaultSettings ++ Seq(
    scalaVersion := "2.11.1",
    unmanagedBase := baseDirectory.value …
Run Code Online (Sandbox Code Playgroud)

sbt

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

使用Apache commons cli库的尾随args

我在我们的代码库中找到了一个命令行实用程序,其中作者编写了一个自制的命令行解析器,其中包含的代码比实用程序本身更多.我决定将它切换到使用Apache CLI,事情几乎正常.

该实用程序使用尾随args,所以它看起来像这样:

util --argA=1 --argB=2 foo blah blarg
Run Code Online (Sandbox Code Playgroud)

其中"foo","blah"和"blarg"用作参数.

有办法处理这种情况吗?我宁愿不(并且可能没有权力)更改此实用程序的命令行签名.

java command-line-interface apache-commons apache-commons-cli

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

在scala中处理嵌套可空对象的习惯方法?

我正在使用scala,最近继承了一些需要嫁接的Java代码,不幸的是在Scala中重写它不在卡片中.它有一个深层嵌套的对象结构,任何级别都可以为null.通常我只关心嵌套内的深层价值.

理想情况下,我会做这样的事情:

 Option(foo.blah.blarg.doh)
Run Code Online (Sandbox Code Playgroud)

但是如果foo.blah.blarg中的任何一个为null,则会生成NPE.

现在我已经把它包装成了一个尝试:

Try(Option(foo.blah.blarg.doh)).getOrElse(None)
Run Code Online (Sandbox Code Playgroud)

请注意,使用.toOption不能正常工作,因为如果链的最后一位为空,它可能会导致Some(null).

我不是特别喜欢这种结构,还有其他任何想法吗?

scala

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

R&C版本的功能会产生不同的结果 - 舍入或操作员错误?

我有一个R代码块,我在C中重写了,这两个版本提供了不同的结果.我的信念是,这是由于R级别的舍入问题,即正在执行多个数学运算,这会产生复杂的舍入问题,而不是整个事情在C中完成,而舍入只发生一次.我担心我在这里过于乐观,希望能有更多的眼睛,看看我是否遗漏了一些东西,实际上我的编码很糟糕.

首先是R代码:

h_tx <- function(x, sigma_nu, sigma_eta, alpha=0) {
   b <- (sqrt(exp(sigma_eta^2) - 1)) / sigma_nu
   a <- -alpha * b
   asinh(a+b*x)
}
Run Code Online (Sandbox Code Playgroud)

现在在C:

double hTx(double x, double sigmaNu, double sigmaEta, double alpha) {
  double a;
  double b;
  double ret;

  b = (sqrt(exp(pow(sigmaEta,2)-1))) / sigmaNu;
  a = -alpha * b;
  return asinh(a + b * x);
}
Run Code Online (Sandbox Code Playgroud)

作为一个例子,传入值5,5,5,0给出了作为R 13.19和C.技术上12.69将R代码被矢量但C代码这个特定的块不是所以不希望提供一个矢量输入作为一个例子.

这些在功能上是相同的,还是我做错了什么?

c r rounding-error

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