在clojure中,函数参数类型不匹配
clojure,函数参数是向量,但它可以毫无问题地获取映射在clojure中,函数参数类型不匹配,clojure,functional-programming,lisp,Clojure,Functional Programming,Lisp,clojure,函数参数是向量,但它可以毫无问题地获取映射 (defn flower-colors [colors] (str "The flowers are " (:flower1 colors) " and " (:flower2 colors))) (flower-colors {:flower1 "red" :flower2 "blue"}) ;; -> "The flowers are red and blue" 函数flowe
(defn flower-colors [colors]
(str "The flowers are "
(:flower1 colors)
" and "
(:flower2 colors)))
(flower-colors {:flower1 "red" :flower2 "blue"})
;; -> "The flowers are red and blue"
函数flowercolors假定采用向量类型参数,但使用映射作为输入,仍然可以。为什么?您误解了函数定义的格式 在函数中,单个参数“colors”是非类型的,可以是任何类型。方括号用于表示参数列表的开始和结束(即,参数的符号被包装在向量中,以区别于以下代码表达式)。所以这个函数:
(defn foo [arg-1 arg-2]
{ :first arg-1 :second arg-2 } )
(println (foo 1 2))
;=> {:first 1, :second 2} ; return value
接受2个参数并在简单映射中返回它们
如果没有方括号,则需要使用其他方法标记第一个和最后一个参数。您误解了函数定义的格式 在函数中,单个参数“colors”是非类型的,可以是任何类型。方括号用于表示参数列表的开始和结束(即,参数的符号被包装在向量中,以区别于以下代码表达式)。所以这个函数:
(defn foo [arg-1 arg-2]
{ :first arg-1 :second arg-2 } )
(println (foo 1 2))
;=> {:first 1, :second 2} ; return value
接受2个参数并在简单映射中返回它们
如果没有方括号,则需要使用其他方法标记第一个和最后一个参数。为什么说参数是向量?在我看来,它不像一个向量,看起来像一个名为colors的映射……你的意思是,在函数形式中(定义函数的地方),参数colors的名称包含在一个向量中吗?为什么你说参数是一个向量?在我看来,它不像一个向量,看起来像一个名为colors的映射……你的意思是,在函数形式(定义函数的地方)中,参数colors的名称包含在一个向量中吗?