我有一系列的价值观.我想知道他们中的任何一个是否评估为真.
(def input [nil nil nil 1 nil 1])
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
(apply or input)
Run Code Online (Sandbox Code Playgroud)
但我不能因为or 宏是一个功能.同样,这也行不通
(reduce or input)
Run Code Online (Sandbox Code Playgroud)
我写了自己的
(def orfn #(if %1 %1 %2))
Run Code Online (Sandbox Code Playgroud)
现在这个有效
(reduce orfn input)
Run Code Online (Sandbox Code Playgroud)
正如这种稍微不同的方法,尽管它只是测试nil.
(not (every? nil? input))
Run Code Online (Sandbox Code Playgroud)
什么是'正确'的方式apply or或等同的方式?
你可以用some与identity要做到这一点:
(some identity [nil nil nil 1 nil 1])
=> 1
Run Code Online (Sandbox Code Playgroud)
some返回将一个函数应用于序列的第一个truthy值,因此这是有效的,因为它1是一个真值.
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |