如何在Clojure中创建最多执行N次其他功能的功能?

救主

首先,我有一个像这样的Mysql表:

create table t (id int(11) PRIMARY KEY unsigned NOT NULL AUTO_INCREMENT, name varchar(20), age int(10));

我定义了一个将在t中创建一行的函数:

(require '[honeysql.core :as sql])

(defn do-something []
    (sql/query {:insert-into  :t
                :values [{:name "name1" :age 10}]})
    (> 3 (rand-int 5)))

现在,我想运行此函数,直到它返回true,但最多返回N次。

take-times代码是错误的,因为重复将使do-something函数一次生效,然后构造惰性序列。

(defn take-times []
   (some true? (repeat 5 (do-something))))

无论收益如何,take-times2将评估do-something5次do-something

(defn take-times2 []
    (some true? (for [i (range 5)]
                  (do-something))))

如果我不使用递归函数和宏该怎么办?

xsc

这应该工作:

(->> (repeatedly do-something)
     (take 5)
     (some true?))

更新(04.11.2014):

由于repeatedly实际上允许使用可选的length参数,因此也可以:

(some true? (repeatedly 5 do-something))

例子

(defn do-something
  []
  ;; 20% chance of true
  (let [ret (rand-nth [true false false false false])]
    (prn 'hello ret)
    ret))

(defn run
  []
  (->> (repeatedly do-something)
       (take 5)
       (some true?)))

(run)
;; hello false
;; hello false
;; hello true
;; => true

(run)
;; hello false
;; hello false
;; hello false
;; hello false
;; hello false
;; => nil

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在CoffeeScript中仅执行一次功能

来自分类Dev

如何在其他功能中停止线程

来自分类Dev

如何在R中重新编写其他功能

来自分类Dev

一个执行n次其他功能的咖喱函数

来自分类Dev

如何在ASP.NET MVC中创建交换列表框或任何其他功能

来自分类Dev

创建一个将其他功能复制100次的功能

来自分类Dev

如何在pygame中停止执行功能

来自分类Dev

如何执行k次功能?

来自分类Dev

AS3 Flash-如何从其他功能中删除动态创建的MovieClip?

来自分类Dev

AS3 Flash-如何从其他功能中删除动态创建的MovieClip?

来自分类Dev

Flutter-如何在下拉列表和其他Flutter功能中包含其他值?

来自分类Dev

从JavaScript中的其他功能执行另一个功能

来自分类Dev

如何在Google表格中查询功能(数据过滤以将数据提取到其他表格)

来自分类Dev

如何在Google Glass的共享功能中添加其他选项?

来自分类Dev

如何在Vue中的其他文件中使用功能

来自分类Dev

如何在架构验证功能中访问文档的其他属性值?

来自分类Dev

如何在Google Glass的共享功能中添加其他选项?

来自分类Dev

我如何在硒webdriver中编写If和其他功能

来自分类Dev

如何在导入模块的其他功能中访问道具

来自分类Dev

如何在javascript或其他方法中自定义排序功能?

来自分类Dev

如何在不延迟所有其他功能的情况下延迟 Pygame 中的事件?

来自分类Dev

如何在QML中创建延迟功能?

来自分类Dev

如何在列表中创建编辑功能?

来自分类Dev

如何在R中创建打印功能?

来自分类Dev

如何在codeigniter中创建搜索功能

来自分类Dev

如何在excel中创建此功能?

来自分类Dev

如何在 postgresql 中创建检查功能?

来自分类Dev

如何在 Firebase 中创建类似功能?

来自分类Dev

其他功能完成后,JavaScript执行功能

Related 相关文章

  1. 1

    如何在CoffeeScript中仅执行一次功能

  2. 2

    如何在其他功能中停止线程

  3. 3

    如何在R中重新编写其他功能

  4. 4

    一个执行n次其他功能的咖喱函数

  5. 5

    如何在ASP.NET MVC中创建交换列表框或任何其他功能

  6. 6

    创建一个将其他功能复制100次的功能

  7. 7

    如何在pygame中停止执行功能

  8. 8

    如何执行k次功能?

  9. 9

    AS3 Flash-如何从其他功能中删除动态创建的MovieClip?

  10. 10

    AS3 Flash-如何从其他功能中删除动态创建的MovieClip?

  11. 11

    Flutter-如何在下拉列表和其他Flutter功能中包含其他值?

  12. 12

    从JavaScript中的其他功能执行另一个功能

  13. 13

    如何在Google表格中查询功能(数据过滤以将数据提取到其他表格)

  14. 14

    如何在Google Glass的共享功能中添加其他选项?

  15. 15

    如何在Vue中的其他文件中使用功能

  16. 16

    如何在架构验证功能中访问文档的其他属性值?

  17. 17

    如何在Google Glass的共享功能中添加其他选项?

  18. 18

    我如何在硒webdriver中编写If和其他功能

  19. 19

    如何在导入模块的其他功能中访问道具

  20. 20

    如何在javascript或其他方法中自定义排序功能?

  21. 21

    如何在不延迟所有其他功能的情况下延迟 Pygame 中的事件?

  22. 22

    如何在QML中创建延迟功能?

  23. 23

    如何在列表中创建编辑功能?

  24. 24

    如何在R中创建打印功能?

  25. 25

    如何在codeigniter中创建搜索功能

  26. 26

    如何在excel中创建此功能?

  27. 27

    如何在 postgresql 中创建检查功能?

  28. 28

    如何在 Firebase 中创建类似功能?

  29. 29

    其他功能完成后,JavaScript执行功能

热门标签

归档