我有一个看起来像这样的项目,使用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) 我在我们的代码库中找到了一个命令行实用程序,其中作者编写了一个自制的命令行解析器,其中包含的代码比实用程序本身更多.我决定将它切换到使用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
我正在使用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).
我不是特别喜欢这种结构,还有其他任何想法吗?
我有一个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代码这个特定的块不是所以不希望提供一个矢量输入作为一个例子.
这些在功能上是相同的,还是我做错了什么?