【发布时间】:2016-04-21 12:52:26
【问题描述】:
clojure 很新,所以请善待。
(def state {:currentPosition "1"})
(while (not= (state :currentPosition) "2") ; this is true
(assoc state :currentPosition "2") ;
)
这会导致无限循环,它不会运行,但我不明白为什么。条件
(not= (state :currentPosition) "2")
是真的
因此,循环开始,然后在循环内部,我正在更新状态。为什么循环没有结束而只是停止灯台?谢谢
【问题讨论】:
-
Ben,根据您的具体要求,Piotr 的回答是正确的。您可能知道这一点,但您正在做的事情并不惯用。 (有时你无论如何都需要做这种事情,这就是原子存在的原因。)当你第一次学习这门语言时,按照你习惯的方式做事是可以的,但是你会想学习 Clojure-样式编码策略很快。一开始可能有点尴尬,但是一旦你习惯了函数式编程,它就会变得美丽而有趣(恕我直言)。如果我告诉你你已经听说过的事情,请忽略这条评论。
-
我完全同意,我正在尝试“正常”编程。这对我习惯的方式来说是一个真正的大变化,哈哈
标签: clojure