我是Erlang的新手,我想知道是否有一种方法可以在没有''的情况下打印#输出等特殊字符,我想打印#,相关代码是:
case {a(N),b(N)} of
{false,_} -> {false,'#'};
但是输出看起来像:{false,'#'},有没有办法获得#而不是'#'?
答案 0 :(得分:2)
在Erlang中,单引号用于表示原子。所以'#'
变成原子而不是特殊字符。
您可能必须使用代表$#
字符的#
来考虑该值,或者#34;#"将表示一个字符串(字符串是Erlang中的字符列表)。
在这种情况下,{false, $#}
将导致{false, 35}
(Ascii值为$#)。
如果要打印字符,则需要使用io:format。
1> io:format("~c~n",[$#]).
#
ok
如果你使用字符串(字符列表),那么:
2> io:format("~s~n",["#"]).
#
ok
如果ok是io:format的返回值。
答案 1 :(得分:0)
使用您给出的示例,您不打印任何内容,您显示的是shell将自动输出的内容:最后一个语句的结果。如果要打印具有给定格式的内容,则必须调用io函数:
1> io:format("~p~n",["#"]). % the pretty print format will show you are printing a string
"#"
ok
2> io:format("~s~n",["#"]). % the string format is used to print strings as text
#
ok
3> io:format("~c~n",[$#]). % the character format is used to print a charater as text
#
ok
4> io:format("~p~n",[{{false,$#}}]). % note that a character is an integer in erlang.
{{false,35}}
ok
5> io:format("~p~n",[{{false,'#'}}]). % '#' is an atom, not an integer, it cannot be print as # without '
% because it doesn't start by a lower case character, and also
% because # has a special meaning in erlang syntax
{{false,'#'}}
ok
6> io:format("~p~n",[{{false,'a#'}}]).
{{false,'a#'}}
ok
7> io:format("~p~n",[{{false,'ab'}}]).
{{false,ab}}
ok
8> io:format("~p~n",[{{false,a#}}]).
* 1: syntax error before: '}'
8>
请注意,每次shell打印最后一个语句的结果时:io:format / 2返回ok