【问题标题】:clojurecademy, thread macro challengeclojurecademy,线程宏挑战
【发布时间】:2023-03-31 06:50:01
【问题描述】:

我目前正在通过 clojurecademy 工作,遇到了这个我似乎无法解决的问题 -

(= (#_blank (sort (rest (reverse [2 5 4 1 3 6]))))
   (-> [2 5 4 1 3 6] (reverse) (rest) (sort) (#_blank))
   5)

我只需要输入足够的内容来填空,起初我以为只是让我写这些函数会返回什么,我认为应该是 (1 2 3 4 5) 但那不正确,我无法弄清楚为什么在 equal 函数中传递了 5,我在想也许我需要添加一个从返回的列表中引用 5 的函数,但我也不知道该怎么做(没有定义的变量) 我可能会走得很远......

这是 clojurecademy,问题 - 基本问题编号 23

【问题讨论】:

  • 如果这是困扰您的问题,= 可以测试超过 2 个参数的相等性(它测试它们是否都相等)
  • 我明白了,但据我所知,前两个 eval 为 - (1 2 3 4 5),最后一个参数是 5,对它​​们应该如何相等感到困惑?
  • 啊,我想我明白了,我必须添加一个从返回列表中取 5 的函数?
  • 偷懒!只需将#_blank 替换为(constantly 5) )))

标签: clojure


【解决方案1】:

挑战是让每个表达式返回 5。

由于= 可以接受多个相等值,Clojure Academy 已在检查中包含 5,以确保您需要完成的两个表达式也返回 5。

我建议尝试让这个表达式返回 5

(#_blank (sort (rest (reverse [2 5 4 1 3 6]))))

然后处理下一个表达式以返回 5。

【讨论】:

  • 我明白了,但我能想到的唯一方法是使用 (nth [col] index) 但如何传递列表?
  • 一个很好的技巧是单独评估每个表达式。所以评估(reverse [2 5 4 1 3 6]) 并查看返回的内容然后(rest (reverse [2 5 4 1 3 6])) 等等。然后,一旦您最终到达(sort (rest (reverse [2 5 4 1 3 6]))),请查看该结果并计算出如何从该值中获得 5。 clojuredocs.org 是一个很好的资源,可以帮助您发现 Clojure 的所有标准函数,这些函数可以帮助实现这一目标。
  • 非常感谢您帮助我理解这一点,我使用了 - 最后
  • :) clojuredocs.org 是查找和理解所有 Clojure 标准库的绝佳资源。
猜你喜欢
  • 2015-09-18
  • 2011-11-17
  • 2014-12-21
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
相关资源
最近更新 更多