小编Alf*_*iao的帖子

如何在Clojure中创建一个ArrayList

我需要在clojure中创建并填充ArrayList并将其传递给Java API.有人可以帮助解释为什么以下两种方法存在差异(以及为什么其中一种方法不起作用).

;;; this works
(defn make-an-array-list []
  (let [alist (java.util.ArrayList.)]
    (loop [x 0] (when (< x 6) (.add alist x) (recur (inc x)))) alist))
;;; ==> [0 1 2 3 4 5]

;;; this does not work
(defn make-an-array-list2 []
  (let [alist (java.util.ArrayList.)]
    (for [n (range 6)] (.add alist n)) alist))
;;; ==> []
Run Code Online (Sandbox Code Playgroud)

或者,是否有任何建议而不是上述方法?

java arraylist clojure

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

如何在Clojure中实现决策矩阵/表

需要实现如下的决策表:

MemberType       Amount      => Discount
"Guest"          > 2000      => 3%
"Silver"         any         => 5%
"Silver"         > 1000      => 10%
"Gold"           any         => 15%
"Gold"           > 500       => 20%
Run Code Online (Sandbox Code Playgroud)

我想,如果在Clojure中正确实现,我们可以定义一个规则表,如下所示:

(defrule calc-discount
  [member-type   amount] 
  "Guest"        (greater-than 2000) => 0.03
  "Silver"       (anything)          => 0.05
  "Silver"       (greater-than 1000) => 0.1
  "Gold"         (anything)          => 0.15
  "Gold"         (greater-than 500)  => 0.2
 )
Run Code Online (Sandbox Code Playgroud)

当然,在编写/定义这样的规则集时应该有更好的方法.然而,我认为关键是如何定义"defrule"来实现这一目标?

clojure

3
推荐指数
2
解决办法
313
查看次数

标签 统计

clojure ×2

arraylist ×1

java ×1