我目前正在尝试建立一个简单的函数,该函数读取整数列表并按如下所示返回每个整数的平方:
(defn square-seq
[s]
(if (string? s)
(s = nil)
(map #(* % %) s)))
但是我希望代码能够处理字符串输入,并且只需将它们默认为数字值即可防止ClassCastException。如我
(square-seq ["Hello" 2 3])
那么返回值为:
(1 4 9) or (nil)
不知道我是想得太多还是只是太笨了,但我不知道如何让它在我的生命中发挥作用,任何帮助将不胜感激!
最佳答案
您正在顶层检查字符串,因此很可能永远不会到达该分支。您必须检查它实际触发错误的位置(在anon-fn内部)。
因此,我首先要编写一个函数,执行“安全平方”,您的square-seq
可以调用该函数。
(defn square
[x]
(if (string? x)
x
(* x x)))
(defn square-seq
[xs]
(map square xs))
(square-seq ["Hello" 42])
; ⇒ ("Hello" 1764)
关于if-statement - 如果出现错误的类型,防止运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59713664/