首页 > 解决方案 > 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

我会得到一个成功的答案。

为什么它有效?原始函数不应该只使用一个参数吗?

标签: clojure

解决方案


我认为你混淆(print-coords [53 32])(print-coords 54 32)

在第一种情况下,是->并且确实是的coords向量。返回值是正确的,因为返回。[53 32]first54latsecondlon 32nilprintlnnil

然而:

user=> (print-coords 54 32)
Execution error (ArityException) at user/eval141 (REPL:1).
Wrong number of args (2) passed to: user/print-coords

推荐阅读