gpt4 book ai didi

elixir - 如何将一个位连接到一个位字符串的末尾?

转载 作者:行者123 更新时间:2023-12-04 13:26:34 27 4
gpt4 key购买 nike

我正在寻找一点点地构造字符串,并且想知道如何做到这一点。

我期望语法类似于将两个字节连接在一起,如下所示:

iex(1)> <<1>> <> <<1>>
<<1, 1>>

所以我尝试了:
iex(2) <<1::1>> <> <<1::1>>
** (ArgumentError) argument error

这可能吗?提前致谢。

最佳答案

我不确定这是否是错误,但让我们探索发生了什么并稍后再担心。

什么是<>?事实证明,这只是在 Kernel.<>/2 中定义的宏。我们如何处理宏才能更好地理解它们?扩大他们!

quote(do: <<1::1>> <> <<1::1>>) 
|> Macro.expand(__ENV__)
|> Macro.to_string
#=> "<<(<<1::1>>::binary), (<<1::1>>::binary)>>"

我们可以看到 <>降低了常规二进制语法的难度。对于我们来说不幸的是,它假定它的参数是二进制文件!我们有位串-因此是错误。如何解决?我们可以直接使用常规的二进制/位串语法:
<< <<1::1>>::bitstring, <<1::1>>::bitstring >>
#=> <<3::size(2)>>

哪个按预期工作。

编辑:我对此进行了跟进。此行为是预期的。 <>运算符旨在处理二进制文件而不是位串。该错误相当令人不愉快,但它来自Erlang内部。

关于elixir - 如何将一个位连接到一个位字符串的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com