If statement Clojure seq?使用if测试未在功能中工作
我已经创建了这个函数make seq。如果传递了一个类似于“(true-false)的seq列表,它将按原样返回,但如果传递了一个false,它将返回(false) 由于某些原因,它在if检查中总是评估为falseIf statement Clojure seq?使用if测试未在功能中工作,if-statement,clojure,seq,If Statement,Clojure,Seq,我已经创建了这个函数make seq。如果传递了一个类似于“(true-false)的seq列表,它将按原样返回,但如果传递了一个false,它将返回(false) 由于某些原因,它在if检查中总是评估为false (make-seq '(true false)) => ((true false)) (make-seq true) => (true) 不确定为什么它会这样做,因为它在repl上运行,因此测试正常 (seq? '(true false)) =>
(make-seq '(true false))
=> ((true false))
(make-seq true)
=> (true)
不确定为什么它会这样做,因为它在repl上运行,因此测试正常
(seq? '(true false))
=> true
defn make seq逻辑在if中不工作的原因是什么
谢谢现在,您的
make seq
函数基本上是丢弃(如果是seq?数据)
和数据
表达式,只返回最终的(列表数据)
你失去了一个开放的平衡,一个封闭的平衡
; ⌄ ⌄
(defn make-seq [data] (if (seq? data) data (list data)))
Clojure linting工具,如
eastwood
和kibit
可以帮助您检测误用,例如您的原始版本的make seq
,其中您丢弃了表达式,如果这些表达式有副作用,这可能是有意义的,但您的没有。现在,您的make seq
函数基本上是丢弃(如果seq?data)
和数据
表达式,只返回最终的(列表数据)
你失去了一个开放的平衡,一个封闭的平衡
; ⌄ ⌄
(defn make-seq [data] (if (seq? data) data (list data)))
Clojure linting工具,如
eastwood
和kibit
可以帮助您检测误用,例如您的原始版本的make seq
,其中您丢弃了表达式,如果这些表达式有副作用,这可能是有意义的,但您的没有。(defn make-seq [data] (if (seq? data) data (list data)))
(make-seq '(true false))
=> (true false)
(make-seq true)
=> (true)
if语句语法需要更正:
(defn make-seq [data] (if (seq? data) data (list data)))
(make-seq '(true false))
=> (true false)
(make-seq true)
=> (true)
除了其他答案,我还建议使用缩进。即使是像这样的简单表达,它也能帮助眼睛更快、更可靠地识别事物:
(defn make-seq
[data]
(if (seq? data)
data
(list data)))
(make-seq '(true false)) => (true false)
(make-seq true) => (true)
除了其他答案,我还建议使用缩进。即使是像这样的简单表达,它也能帮助眼睛更快、更可靠地识别事物:
(defn make-seq
[data]
(if (seq? data)
data
(list data)))
(make-seq '(true false)) => (true false)
(make-seq true) => (true)
愚蠢的我。谢谢,我真蠢。谢谢