我是 Elixir 的新手,我正在尝试使用IO.puts
. IO.puts
需要字符数据。我查看了 Elixir 文档并没有看到将元组转换为位串的方法。我知道必须有办法做到这一点,但我还没有找到任何这样做的 BIF。
所以我想将 this: 转换{"foo", "bar", "baz"}
为 this: "foobarbaz"
。
我正在学习 Elixir 和 Erlang,所以这对我来说都是全新的。
提前致谢!
通常我们使用元组来保存固定数量的数据,预先知道。因此,如果您想打印元组的内容,我建议您这样做:
def print_tuple({ foo, bar, baz }) do
IO.puts foo <> bar <> baz
end
如果您要打印的元组具有动态大小,则很可能您想使用列表来代替。您可以使用许多函数将列表的元素转换为二进制,例如Enum.join/2
:
IO.puts Enum.join(list)
如果您绝对确定要打印元组内容,可以执行以下操作:
IO.puts Enum.join(Tuple.to_list(tuple))
请记住,您可以使用IO.inspect/1
.
Enum.join
创建一个由列表的连续元素组成的位串。首先将元组转换为列表。使用( |>
pipe) 运算符可以提高可读性:
{"foo", "bar", "baz"} |> Tuple.to_list |> Enum.join # "foobarbaz"
您还可以指定分隔符:
{"foo", "bar", "baz"} |> Tuple.to_list |> Enum.join(", ") # "foo, bar, baz"
这应该做的工作:
def concat_binaries(binaries) do
List.foldr(binaries, <<>>, fn(a, b) -> <<a :: binary, b :: binary>> end)
end
tuple = {"foo", "bar", "baz"}
IO.puts(concat_binaries(tuple_to_list(tuple)))