如何在惯用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?