文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

今天的Erlang Thursday讲的是 erlang:list_to_atom/1.

erlang:list_to_atom/1 的入参是一个字符串,返回的是一个Erlang的原子。

list_to_atom("foo").
% foo
list_to_atom("Foo").
% 'Foo'
list_to_atom("Foo_bar").
% 'Foo_bar'
list_to_atom("foo_bar").
% foo_bar
list_to_atom("foo"++"bar").
% foobar
list_to_atom("Erlang").
% 'Erlang'
list_to_atom("Elixir").
% 'Elixir'

这个函数在你必须要基于从外部系统读到的字符串,比如解析一个CSV类型的头部,生成键或标识符的时候有用。

lists:map(fun erlang:list_to_atom/1,
          string:tokens("firstName,lastName,age,gender,preferredName,dateOfBirth", ",")).
% [firstName,lastName,age,gender,preferredName,dateOfBirth]
第 1 段(可获 2 积分)

当你用 erlang:list_to_atom/1 将从外部系统获取的字符串转换成原子的时候一定要小心,因为它只能处理值为256以下的字符。任何字符值在256(注1)以下的字符串都能正常地用该函数转成一个原子。

list_to_atom("Joe, Mike, and Robert").
% 'Joe, Mike, and Robert'
list_to_atom("it's").
% 'it's'
list_to_atom("heyn").
% 'heyn'€
list_to_atom("with_supported_char"++[255]).
% with_supported_charÿ
list_to_atom("with_non_supported_char"++[256]).
% ** exception error: bad argument
%      in function  list_to_atom/1
%         called as list_to_atom([119,105,116,104,95,110,111,110,95,115,117,112,112,111,114,
%                                 116,101,100,95,99,104,97,114,256])

1、字符值必须是非负整数,范围是0到255。

第 2 段(可获 2 积分)

文章评论