我有一个字符串化值,可能是整数或布尔值 ( "20", "true")。我想将值转换为它的类型,但是,当我对错误的类型进行转换时,我收到运行时错误:
iex> String.to_existing_atom("20")
** (ArgumentError) argument error
:erlang.binary_to_existing_atom("20", :utf8)
iex> String.to_integer("true")
** (ArgumentError) argument error
:erlang.binary_to_integer("true")
Run Code Online (Sandbox Code Playgroud)
如果您只需要从字符串转换整数和布尔值,您可以这样做:
defmodule Converter do
def convert!("true"), do: true
def convert!("false"), do: false
def convert!(num), do: String.to_integer(num)
end
Run Code Online (Sandbox Code Playgroud)
使用示例:
iex(4)> Enum.map(["20", "true", "-5", "false"], &Converter.convert!/1)
[20, true, -5, false]
Run Code Online (Sandbox Code Playgroud)
如果您正在处理 json,您可能需要考虑使用解析库,例如Poison。
| 归档时间: |
|
| 查看次数: |
9037 次 |
| 最近记录: |