小编mik*_*era的帖子

测试列表是否包含Clojure中的特定值

在Clojure中测试列表是否包含给定值的最佳方法是什么?

特别是,这种行为contains?目前令我感到困惑:

(contains? '(100 101 102) 101) => false
Run Code Online (Sandbox Code Playgroud)

我显然可以编写一个简单的函数来遍历列表并测试相等性,但肯定有一种标准的方法可以做到这一点吗?

clojure data-structures

154
推荐指数
9
解决办法
6万
查看次数

Swing GUI中validate(),revalidate()和invalidate()之间的区别

Swing组件有多种与屏幕布局更新相关的方法,特别是:

Java文档从技术角度对这些进行了一些定义,但是它们的使用方式并不是特别清楚.

它们之间有什么区别,在什么情况下你应该使用一个而不是其他一个?

java user-interface swing

107
推荐指数
2
解决办法
5万
查看次数

为什么Clojure有5种方法来定义一个类而不是一个?

Clojure具有gen-class,reify,proxy以及deftype和defrecord来定义新的类类数据类型.对于一种重视句法简洁性并憎恶不必要的复杂性的语言来说,这似乎是一种失常.有人可以解释为什么会这样吗?Common Lisp风格的defclass能够满足吗?

clojure clojure-java-interop

81
推荐指数
2
解决办法
1万
查看次数

Monads vs. Arrows

我对函数式编程中使用的monad箭头的概念非常熟悉.我也明白它们可以用来解决类似的问题.

但是,对于如何选择在任何给定情况下使用哪一个,我仍然有点困惑.

我什么时候应该使用monads?什么时候应该使用箭头?

language-agnostic monads haskell functional-programming arrows

70
推荐指数
2
解决办法
8200
查看次数

并发JUnit测试

我有一个大的JUnit测试套件,我非常希望同时运行所有测试,原因有两个:

  • 利用多个内核来更快地运行整个测试套件
  • 希望检测由于非线程安全的全局对象导致的一些错误

我认识到这将迫使我重构一些代码以使其成为线程安全的,但我认为这是一件好事:-)

让JUnit同时运行所有测试的最佳方法是什么?

java concurrency junit multithreading unit-testing

69
推荐指数
4
解决办法
7万
查看次数

实现函数式编程中的多态性

我目前正在享受从面向对象语言到功能语言的过渡.这是一股清新的空气,我发现自己比以前更富有成效.

但是 - 有一个方面的OOP我还没有在FP方面看到一个令人满意的答案,那就是多态性.即我有大量的数据项,当它们被传递到某些函数时需要以完全不同的方式处理.为了论证,让我们说有多种因素推动多态行为,因此潜在地指数多种不同的行为组合.

在OOP中,可以使用多态性相对较好地处理:通过组合+继承或基于原型的方法.

在FP中我有点卡在:

  • 通过分支每个数据项的值来编写或编写有效实现多态行为的纯函数 - 感觉就像组装一个巨大的条件甚至模拟虚拟方法表!
  • 将函数以类似原型的方式放在纯数据结构中 - 这看起来似乎有效,但是它是否也违反了将数据与数据分开定义的想法?

对于这种情况,推荐的功能方法是什么?还有其他好的选择吗?

language-agnostic oop polymorphism functional-programming prototype

50
推荐指数
4
解决办法
7240
查看次数

禁止基于Maven的持续集成构建的GPG签名(Travis CI)

我正在使用Travis-CI为我正在开发的一些Java开源项目提供持续集成构建.

通常情况下这很顺利,但是当POM指定GPG签名时我遇到了问题,例如

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-gpg-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>sign-artifacts</id>
      <phase>verify</phase>
      <goals>
        <goal>sign</goal>
      </goals>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这导致Travis构建失败 - 显然是因为它在运行时没有可用的密码mvn install.有关示例,请参阅此构建.

配置Maven和/或Travis以跳过针对CI测试版本的GPG签名的最佳方法是什么,但是当我进行适当的版本构建时仍然执行GPG签名?

java continuous-integration gnupg maven travis-ci

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

"^:static"在Clojure中做了什么?

^:static在Clojure core.clj源代码中看到了很多函数的元数据,例如在以下定义中seq?:

(def
 ^{:arglists '([x])
   :doc "Return true if x implements ISeq"
   :added "1.0"
   :static true}
 seq? (fn ^:static seq? [x] (instance? clojure.lang.ISeq x)))
Run Code Online (Sandbox Code Playgroud)

这个元数据究竟做了什么,为什么它在整个过程中频繁使用core.clj

metadata clojure

33
推荐指数
2
解决办法
3201
查看次数

Clojure中的不可变队列

在Clojure中获取简单,高效的不可变队列数据类型的最佳方法是什么?

它只需要两个操作,用通常的语义排队和出列.

我当然考虑过列表和向量,但我知道它们在结尾和开始时的性能相对较差(即O(n)或更差) - 因此不适合排队!

理想情况下,我想要一个适当的持久数据结构,其中包含入队和出队操作的O(log n).

algorithm queue clojure immutability data-structures

32
推荐指数
2
解决办法
5882
查看次数

使用Groovy解压缩存档

Groovy中是否有内置的支持来处理Zip文件(groovy方式)?

或者我是否必须使用Java的java.util.zip.ZipFile来处理Groovy中的Zip文件?

java groovy zip unzip

28
推荐指数
3
解决办法
4万
查看次数