如何解决显示并行Clojure数组和范围值
以下函数采用摄氏温度范围,将其转换为华氏温度,然后将其放入数组中。
(defn build-f [size]
(map float (vec (map #(+(/(* % 9)5)32) (range size)))))
然后我的目标是以以下格式打印每个转换的温度:
C[0] = 32 F
C[1] = 33.8 F
...
格式并不重要。我是函数编程的新手,但仍在思考OOP
方式。 我试图使用map函数来做到这一点。我应该怎么办?映射,缩小,缩小吗?
到目前为止,我提出了以下建议:
-
显示格式功能应显示类似
C[0] =
的内容。我不确定如何将[index]放置在那里。(defn display-format [t-scale] (println t-scale“ =”))
-
display-array函数应使用map函数应用显示格式 对数组起作用。
(defn display-array [t-scale array] (地图(显示格式的t比例尺)数组)
我朝着正确的方向前进吗?
更新: 这是我要的代码。希望对别人有帮助。
(defn display-table [from-scale array to-scale]
(map #(println (str from-scale "[" %1 "] = " %2 " " to-scale))
(range (count array)) array))
解决方法
请参阅this list of documentation。尤其要研究Clojure CheatSheet。
出于您的目的,学习
-
doseq
用于遍历值以打印输出 -
format
用于使用%d
和类似的输出格式设置选项 -
str
用于连接字符串 - 我建议创建一个函数
celcius->farenheit
,然后在循环中调用它。在输入arg上调用double
,它将避免对int与float一直到下游的任何担忧。 - 与
mapv
相比,我总是更喜欢map
来消除懒惰带来的问题
享受!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。