在 elixir 中, 可以使用模式匹配来精确地处理字符串.

1 byte(字节) = 8 bit(比特), 1 bit 在 elixir 中表现为 <<0~255>>.
长度可以被8整除的 bit 串, 即为 binary, 也就是 elixir 中的字符串.

例如, phoenix 项目中的这段代码:

  defp drop_unique(info) do
    prefix = byte_size(info) - 7
    case info do
      <<attr::size(prefix)-binary, ":unique">> -> attr
      _ -> info
    end
  end

这里用 <<attr::size(prefix)-binary, ...>> 来进行模式匹配, 表示attr 将匹配到一个长度为prefix的 binary.

也可以使用 unit(n) 来指定单位长度的比特数. 例如: <<a::size(3)-unit(4)>> 表示匹配长度为3, 单位长度为4bit的数据.

更多: https://hexdocs.pm/elixir/Ker...


Ljzn
399 声望102 粉丝

网络安全;函数式编程;数字货币;人工智能