显示并行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函数来做到这一点。我应该怎么办?映射,缩小,缩小吗?

到目前为止,我提出了以下建议:

  1. 显示格式功能应显示类似C[0] =的内容。我不确定如何将[index]放置在那里。

    (defn display-format [t-scale] (println t-scale“ =”))

  2. 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。

出于您的目的,学习

  1. doseq用于遍历值以打印输出
  2. format用于使用%d和类似的输出格式设置选项
  3. str用于连接字符串
  4. 我建议创建一个函数celcius->farenheit,然后在循环中调用它。在输入arg上调用double,它将避免对int与float一直到下游的任何担忧。
  5. mapv相比,我总是更喜欢map来消除懒惰带来的问题

享受!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...