Elixir:追加到k次的字符串

时间:2017-09-15 21:50:07

标签: elixir

在命令式语言中,我们可以使用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,"")

1 个答案:

答案 0 :(得分:1)

有多种方法可以实现这一点,包括列表理解,但使用String.duplicate/2似乎是一个很好的选择

String.duplicate

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