这非常重要,我在截止日期前完全陷入困境.非常感谢帮助.
我有一个名为red-black的Clojure项目,它特别包含一个名为interval_tree.clj的文件
我一直在用lein uberjar编译这个项目,然后在其他项目中使用生成的jar,将它安装在本地maven资源库中.
mvn install:install-file \
-Dfile=../red-black/target/red-black-0.1.0.jar \
-DgroupId=self \
-DartifactId=red-black \
-Dversion=0.1.0 \
-Dpackaging=jar \
-DgeneratePom=true \
-DcreateChecksum=true \
-DlocalRepositoryPath=local_mvn_repo
Run Code Online (Sandbox Code Playgroud)
疯狂的是,我添加了一个新功能,编译我的jar并在另一个项目的本地maven存储库中重新安装它,现在java无法找到我的新功能
user=> (red-black.interval-tree/tree-to-flat-list )
CompilerException java.lang.RuntimeException: No such var: red-black.interval-tree/tree-to-flat-list, compiling (NO_SOURCE_PATH:1:1)
Run Code Online (Sandbox Code Playgroud)
但是这个函数是red-black.interval-tree.clj!我甚至进入了我的local_mvn_repo,解压缩了jar,并查看了interval_tree.clj源代码.功能就在那里!
更奇怪的是,该库中的其他功能是可访问的.例如,在我的第二个项目中使用本地mvn repo:
user=> (use 'red-black.interval-tree)
nil
Run Code Online (Sandbox Code Playgroud)
现在一个小标签选项卡魔术:
user=> (red-black.interval-tree/
red-black.interval-tree/add-to-result red-black.interval-tree/black red-black.interval-tree/check-max-interval
red-black.interval-tree/get-color red-black.interval-tree/get-hash red-black.interval-tree/get-interval
red-black.interval-tree/get-key red-black.interval-tree/get-left red-black.interval-tree/get-max
red-black.interval-tree/get-parent red-black.interval-tree/get-right red-black.interval-tree/get-root
red-black.interval-tree/get-sentinel red-black.interval-tree/get-value red-black.interval-tree/has?
red-black.interval-tree/health-check red-black.interval-tree/high red-black.interval-tree/insert
red-black.interval-tree/insert-fixup red-black.interval-tree/left-rotate red-black.interval-tree/low
red-black.interval-tree/max-of-three red-black.interval-tree/new red-black.interval-tree/node
red-black.interval-tree/point-lookup red-black.interval-tree/pretty-print red-black.interval-tree/recursive-max
red-black.interval-tree/red red-black.interval-tree/right-rotate red-black.interval-tree/set-color
red-black.interval-tree/set-interval red-black.interval-tree/set-key red-black.interval-tree/set-left
red-black.interval-tree/set-max red-black.interval-tree/set-parent red-black.interval-tree/set-right …Run Code Online (Sandbox Code Playgroud) 我正在研究一段代码,其中数字相等是几个逻辑条件中的一个重要因素.Clojure正在做一些我不太了解的事情.例如:
user=> (- 5 4.9)
0.09999999999999964
user=> (- 5 4.8)
0.20000000000000018
user=> (- 5 2.9)
2.1
user=> (- 5 2.7)
2.3
user=> (- 5 2.8)
2.2
user=> (- 9 6.9)
2.0999999999999996
user=> (- 9 2.9)
6.1
Run Code Online (Sandbox Code Playgroud)
在某些情况下,Clojure数字似乎将减法理解为0.1,而在其他情况下则不然.这里发生了什么?
如何在Clojure中将符号重新绑定到新的数据结构.例如:
(def hash-map-one {:a "foo" :b "bar"})
(def hash-map-two {:c "gaz" :d "waka"})
;; right here make hash-map-one equal to hash-map-two very quickly
;; if this were python I would say hash-map-one = hash-map-two
Run Code Online (Sandbox Code Playgroud)
有点动机,我这样做是因为我有一个依赖于数据文件的Web服务,并且该数据文件将被更新,此时我需要在没有停机的情况下"切换"到新数据.
提前致谢!
我正在学习Robert Sedgewick的Algorithms in C++中的C++.现在我正在研究Eratosthenes的Sieve,用户指定最大素数的上限.当我使用max 46349运行代码时,它运行并打印出所有质数,最高可达46349,但是当我运行max 46350的代码时,会发生分段错误.有人可以帮忙解释原因吗?
./sieve.exe 46349
2 3 5 7 11 13 17 19 23 29 31 ...
./sieve.exe 46350
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)
码:
#include<iostream>
using namespace std;
static const int N = 1000;
int main(int argc, char *argv[]) {
int i, M;
//parse argument as integer
if( argv[1] ) {
M = atoi(argv[1]);
}
if( not M ) {
M = N;
}
//allocate memory to the array
int *a = new int[M];
//are we out of …Run Code Online (Sandbox Code Playgroud) c++ memory-management segmentation-fault sieve-of-eratosthenes
可以说我在Java中有一个for循环:
for(Foo foo : foos){ do_something() }
Run Code Online (Sandbox Code Playgroud)
现在让我说我想将这个列表迭代翻译成惯用的clojure.什么是最好的方式?我想在foos集合中返回一些我可以像迭代器一样使用的东西.
我试图通过aws java api以编程方式列出我的ec2实例.
public static void main(String[] args) {
AWSCredentials awsCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey);
AmazonEC2AsyncClient amazonEC2AsyncClient = new AmazonEC2AsyncClient(awsCredentials);
DescribeAvailabilityZonesRequest describeAvailabilityZonesRequest = new DescribeAvailabilityZonesRequest();
Future<DescribeAvailabilityZonesResult> describeAvailabilityZonesResultFuture = amazonEC2AsyncClient.describeAvailabilityZonesAsync(describeAvailabilityZonesRequest);
try {
DescribeAvailabilityZonesResult describeAvailabilityZonesResult = describeAvailabilityZonesResultFuture.get();
System.out.println(describeAvailabilityZonesResult);
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这打印如下:
{AvailabilityZones: [
{ZoneName: us-east-1a,State: available,RegionName: us-east-1,Messages: []},
{ZoneName: us-east-1b,State: available,RegionName: us-east-1,Messages: []},
{ZoneName: us-east-1c,State: available,RegionName: us-east-1,Messages: []}]}
Run Code Online (Sandbox Code Playgroud)
但是,我知道我在us-west-2中有例子.当我将其添加到我的api查询中时
describeAvailabilityZonesRequest.withZoneNames("us-west-2");
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
java.util.concurrent.ExecutionException: com.amazonaws.AmazonServiceException: Status Code: 400, AWS Service: AmazonEC2, AWS Request ID: 38956486-2686-4466-b9e0-45ef12395676, AWS Error Code: …Run Code Online (Sandbox Code Playgroud) 我正在考虑正统.我知道docstrings被解析和显示,但是我可以启用^{:doc "Description"}解析吗?例如,这是有效的
(defn get-foo "Get the Foo" [] @foo)
Run Code Online (Sandbox Code Playgroud)
但不是这个
(defn get-foo ^{:doc "Get the Foo"} [] @foo)
Run Code Online (Sandbox Code Playgroud) 我有一个使用ant-run插件的maven项目。我添加了回显消息,但它似乎没有执行:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ast-application-deployment-kit</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="Starting ant-run target configuration."/>
Run Code Online (Sandbox Code Playgroud)
但是当mvn clean package我看到
[INFO] --- maven-antrun-plugin:1.3:run (my-app) @ my-app ---
[INFO] Executing tasks
[INFO] Executed tasks
Run Code Online (Sandbox Code Playgroud)
但我看不到回声。我究竟做错了什么?
我正在尝试确定要使用的 java 日期格式字符串
"Fri Jun 05 00:00:00 PDT 2015"
Run Code Online (Sandbox Code Playgroud)
现在我正在使用
SimpleDateFormat format = new SimpleDateFormat("EEE MM dd HH:mm:ss zzzz yyyy");
Run Code Online (Sandbox Code Playgroud)
但这会产生
com.fasterxml.jackson.databind.JsonMappingException:
java.text.ParseException: Unparseable date: "Fri Jun 05 00:00:00 PDT 2015"
(through reference chain:....
Run Code Online (Sandbox Code Playgroud) 我有两个可变参数函数。其中一个将其参数传递给另一个。问题是可变参数在第二次调用时变成了一个列表。我如何保持它们的可变参数?
=> (defn foo [x & ys] (println x ys))
=> (defn bar [x & ys] (foo (clojure.string/upper-case x) ys))
=> (foo "hi")
hi nil
=> (bar "hi")
HI (nil)
Run Code Online (Sandbox Code Playgroud)
在实际函数中,foo 将其 args 传递给可变参数 java 函数,因此 varargs 确实需要保留 varargs。我该怎么做呢?