如何在惯用clojure方式重复字符串n次?
在Ruby中, "str" * 3
会给你“strstrstr”。 在Clojure中,我能想到的最接近的是(map (fn [n] "str") (range 3))
有没有更习惯性的做法呢?
这个怎么样?
(apply str (repeat 3 "str"))
要不就
(repeat 3 "str")
如果你想要一个序列而不是一个字符串。
另一种使用协议的有趣替代方法是:
(defprotocol Multiply (* [this n]))
接下来,String类被扩展:
(extend String Multiply {:* (fn [this n] (apply str (repeat n this)))})
所以你现在可以'方便'使用:
(* "foo" 3)
你也可以使用clojure.contrib.string中的重复函数。 如果您使用require等将它添加到您的名称空间中
(ns myns.core (:require [clojure.contrib.string :as str]))
然后
(str/repeat 3 "hello")
会给你
"hellohellohello"
链接地址: http://www.djcxy.com/p/66873.html
上一篇: How to repeat string n times in idiomatic clojure way?
下一篇: What is the idiomatic way to prepend to a vector in Clojure?