在长生不老药中,以下等价物:
str1 = "hello "
str2 = "world"
result = str1 <> str2
result = <<str1::binary, str2::binary>>
??
答案 0 :(得分:4)
是的。 <>/2
运算符是一个宏,它将代码转换为<<>>
特殊形式。
quote do str1 <> str2 end
|> Macro.expand(__ENV__)
|> Macro.to_string()
输出:
"<<str1::binary, str2::binary>>"
答案 1 :(得分:1)
是的,它们是等效的。
在Elixir中,string
类型是UTF-8 encoded binary,因此"hello"
是<<"h", "e", "l", "l", "o">>
或<<104, 101, 108, 108, 111>>
。
字符串串联操作实际上是二进制串联运算符,所以
str1 <> str2 == <<str1::binary>> <> <<str2:binary>> == <<str1::binary, str2::binary>>