clojure - 2 个参数到一个参数函数中
问题描述
人们,
我前段时间开始学习clojure,我有一个问题。
在这个函数中:
(defn print-coords [coords]
(let [lat (first coords)
lon (last coords)]
(println (str "Latitude: " lat " - " "Longitude: " lon))))
=> #'dev-projects.core/print-coords
我正在用一个参数定义一个全局函数。
但是,如果我调用这些论点:
(print-coords [54 32])
Latitude: 54 - Longitude: 32
=> nil
我会得到一个成功的答案。
为什么它有效?原始函数不应该只使用一个参数吗?
解决方案
我认为你混淆(print-coords [53 32])
了(print-coords 54 32)
。
在第一种情况下,是->并且确实是的coords
向量。返回值是正确的,因为返回。[53 32]
first
54
lat
second
lon
32
nil
println
nil
然而:
user=> (print-coords 54 32)
Execution error (ArityException) at user/eval141 (REPL:1).
Wrong number of args (2) passed to: user/print-coords
推荐阅读
- sql - 防止事务中的死锁
- ios - 如何防止我的 Swift 函数退出,直到转义闭包回调完成?
- java - 分发具有相同 SSL Key/TrustStore 的客户端/服务器应用程序是否安全?
- javascript - 无法设置属性...只有 Getter (javascript es6)
- python - 有没有办法对远程会话进行身份验证以抓取数据并保持身份验证而不是在每个请求中进行身份验证?
- swift - Firebase Auth lastSignInDate 和 creationDate 比较失败
- ionic-framework - 如何在 ionic3 中更新时向 tabBadge 未读消息计数添加声音
- r - 使用 expss 包在 R 中的顶部 2 个 boxES 和底部 2 个盒子网
- reactjs - 将道具传递给新的 URL/路由
- html - href="../" 链接到根目录而不是父目录