如何解决构造一个返回元素的clojure函数
clojure刚好熟悉,我想创建一个返回包含三个元素的列表的函数:
- 第一个元素是字符串
- 第二个元素是向量y(应包含三个关键字)
- 最后一个元素是数字
到目前为止,我的功能代码:
(defn make-list [x,y,z]
(str)
[:y1 :y2 :y3]
z)
解决方法
假设您要用来构建列表的元素是您的参数x,y和z;并且您将提供正确的元素类型(例如x
将是一个字符串,y
将是3个关键字的列表,而z
将是一个数字,您可以只需调用函数list:
$ clj
Clojure 1.10.1
user=> (list "hello" [:a :b :c] 42)
("hello" [:a :b :c] 42)
在您的代码中,正在发生的事情是您提供了3个参数,并且该函数正在评估您传递的值,并且仅返回最后一个值:
(defn make-list [x,y,z]
(str) ;; this creates an empty string that is not bound to a name,will be discarded
[:y1 :y2 :y3] ;; this creates a vector with 3 keywords,also will be lost,same as above
z) ;; z is the last value being evaluated,will be returned
像这样:
user=> (make-list "unused" [:values :not :used :either] 99)
99
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。