clojure/core apply

点我查看原文

(ns $clojureDoc.core.apply)
;; 使用示例 ([f args] [f x args] [f x y args] [f x y z args] [f a b c d & args])
;; apply takes a variable number of arguments and a collection.
;; apply接受可变数量的参数和集合
;; apply effectively unrolls the supplied args and a collection into a list of arguments to the supplied function.
;; apply有效地将提供的参数和集合展开到提供的函数的参数列表中。

(println (str ["Hel" "lo"] "World"))
;; ⇒ ["Hel" "lo"]World
(println (apply str ["Hel" "lo"] "World"))
;; ⇒ ["Hel" "lo"]World
(println (apply str "World" " " ["Hel" "lo"]))
;; ⇒ World Hello
(println (apply str ["Hel" "lo" " " "World"]))
;; ⇒ Hello World

;; apply prepends any supplied arguments to the form as well.
;; apply还将任何提供的参数前置到表单中。
;; This attempts to add 2 vectors with +
;; 尝试将两个向量相加,将会报ClassCastException错误
;; (println (map + [[1 2 3] [1 2 3]]))
;; 若使用apply,等价于(map + [1 2 3] [1 2 3])
(println (apply map + [[1 2 3] [1 2 3]]))
;; ⇒ (2 4 6)

(println (apply + 1 2 3 [4 5 6])) ;; same as  (+ 1 2 3 4 5 6)
;; ⇒ 21
;; 反转参数位置,将会报IllegalArgumentException错误
;;(println (apply + [4 5 6] 1 2 3))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值