如何在Clojure中将功能应用于范围?

缺口

我是Clojure的新手,因此尝试使用clojuredocs.org中的示例数据。

;; Data
(def scenes [{:subject "Frankie"
              :action "say"
              :object "relax"}

         {:subject "Lucy"
          :action "loves"
          :object "Clojure"}

         {:subject "Rich"
          :action "tries"
          :object "a new conditioner"}])

(defn play [scenes n]
  "Play a scene"
  (->>
   scenes
   (#(get % n))
   ((juxt :subject :action :object))
   (interpose " ")
   (apply str)))

play功能可以正常工作:

my-stuff.core> (play scenes 0)
"Frankie say relax"
my-stuff.core> (play scenes 1)
"Lucy loves Clojure"
my-stuff.core> (play scenes 2)
"Rich tries a new conditioner"

play-all功能不起作用:

(defn play-all [scenes]
  "Play all the scenes"
  (let [x (count scenes)]
    (for [n (range x)]
      (map play scenes n ))))

如何更正此play-all功能,即如何将播放功能应用于数据范围?

T·古奈尔

map迭代一个(或多个)集合以产生一个序列。for根据列表理解建立一个序列你的情况,你可以使用一个另一个。

就分解而言,实际上具有播放一个场景的功能将是有意义的

(defn play-one [scene]
  "Play a scene"
  (->>
   scene
   ((juxt :subject :action :object))
   (interpose " ")
   (apply str)))

然后播放第n个可以使用先例定义:

(defn play-nth [scenes n]
  "Play the n(th) scene"
  (->
   scenes
   (#(get % n))
   play-one))

您可以通过多种方式播放所有场景:

(defn play-all-map1 [scenes]
  "Play all the scenes"
 (map (partial play-nth scenes) (range (count scenes))))

但是您可以真正简化一下,因为您不需要,range因为scenes可以将其视为一个序列(假设您对索引不感兴趣):

(defn play-all-map2 [scenes]
  "Play all the scenes with map"
  (map play-one scenes))

并带有for

(defn play-all-for [scenes]
  "Play all the scenes with for"
  (for [scene scenes]
    (play-one scene)))

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在R中将特定功能应用于列范围(但仅将其应用于每个列)?

来自分类Dev

如何在Scala中将功能应用于选项列表?

来自分类Dev

如何在HiveQL中将Windows功能应用于Spark

来自分类Dev

如何在VIPS / Python中将转换应用于特定的音调范围

来自分类Dev

如何在VIPS / Python中将转换应用于特定的音调范围

来自分类Dev

如何在R中将多个功能应用于data.table

来自分类Dev

如何在Python中将self应用于方法参数

来自分类Dev

如何在OpenCV中将转换矩阵应用于点?

来自分类常见问题

如何在Javascript中将条件应用于forEach循环?

来自分类Dev

如何在MySQL中将位掩码应用于整数?

来自分类Dev

如何在GitBook中将样式应用于代码块?

来自分类Dev

如何在JavaScript中将重力应用于弹跳球-

来自分类Dev

如何在Android中将波纹效果应用于BottomSheets

来自分类Dev

如何在Swift中将阴影应用于UITextView?

来自分类Dev

如何在tidyverse中将函数应用于名称

来自分类Dev

如何在Javascript中将查找应用于数组?

来自分类Dev

如何在Tabulator中将CSS应用于工具提示

来自分类Dev

如何在Javascript中将条件应用于forEach循环?

来自分类Dev

如何在MS Excel中将VBA应用于多行?

来自分类Dev

如何在XSLT中将translate()应用于属性值?

来自分类Dev

如何在Swift中将阴影应用于UITextView?

来自分类Dev

如何在Android中将波纹效果应用于BottomSheets

来自分类Dev

如何在不将公式应用于每个单元格的情况下将公式应用于范围?

来自分类Dev

Clojure:将功能应用于地图的叶节点

来自分类Dev

在Access VBA中将子例程应用于日期范围

来自分类Dev

如何在系统范围内将更改应用于键盘布局?

来自分类Dev

如何在Matlab中将相同的设置应用于不同的图形?

来自分类Dev

如何在haskell的构造函数中将函数应用于值?

来自分类Dev

如何在Three.js中将纹理应用于自定义几何

Related 相关文章

  1. 1

    如何在R中将特定功能应用于列范围(但仅将其应用于每个列)?

  2. 2

    如何在Scala中将功能应用于选项列表?

  3. 3

    如何在HiveQL中将Windows功能应用于Spark

  4. 4

    如何在VIPS / Python中将转换应用于特定的音调范围

  5. 5

    如何在VIPS / Python中将转换应用于特定的音调范围

  6. 6

    如何在R中将多个功能应用于data.table

  7. 7

    如何在Python中将self应用于方法参数

  8. 8

    如何在OpenCV中将转换矩阵应用于点?

  9. 9

    如何在Javascript中将条件应用于forEach循环?

  10. 10

    如何在MySQL中将位掩码应用于整数?

  11. 11

    如何在GitBook中将样式应用于代码块?

  12. 12

    如何在JavaScript中将重力应用于弹跳球-

  13. 13

    如何在Android中将波纹效果应用于BottomSheets

  14. 14

    如何在Swift中将阴影应用于UITextView?

  15. 15

    如何在tidyverse中将函数应用于名称

  16. 16

    如何在Javascript中将查找应用于数组?

  17. 17

    如何在Tabulator中将CSS应用于工具提示

  18. 18

    如何在Javascript中将条件应用于forEach循环?

  19. 19

    如何在MS Excel中将VBA应用于多行?

  20. 20

    如何在XSLT中将translate()应用于属性值?

  21. 21

    如何在Swift中将阴影应用于UITextView?

  22. 22

    如何在Android中将波纹效果应用于BottomSheets

  23. 23

    如何在不将公式应用于每个单元格的情况下将公式应用于范围?

  24. 24

    Clojure:将功能应用于地图的叶节点

  25. 25

    在Access VBA中将子例程应用于日期范围

  26. 26

    如何在系统范围内将更改应用于键盘布局?

  27. 27

    如何在Matlab中将相同的设置应用于不同的图形?

  28. 28

    如何在haskell的构造函数中将函数应用于值?

  29. 29

    如何在Three.js中将纹理应用于自定义几何

热门标签

归档