在命令式语言中,我们可以使用for循环将字符串追加到k次。
str = ""
k=5
for i=1 to i=k:
str = str + "a"
上面的代码将生成一个长度为k aaaaa
的字符串。现在,我们在elixir中没有任何for / while循环,唯一的方法似乎是递归。我想知道是否有任何其他微不足道的方法来实现同样的目标。这样的事情可能吗?
In range(1..k)
|> Enum.join(a,"")
答案 0 :(得分:1)
有多种方法可以实现这一点,包括列表理解,但使用String.duplicate/2似乎是一个很好的选择
String.duplicate("a", k)
这可能是最优雅的方式
for _ <- 1..k, do: "a", into: ""
1..k
|> Enum.map(fn _ -> "a" end)
|> Enum.join("")
对并行计算很有用。感谢@mudasobwa
Stream.repeatedly(fn -> "a" end)
|> Enum.take(5)
|> Enum.join
Stream.cycle(["a"])
|> Enum.take(5)
|> Enum.join