erlang シェルから入力する関数があります。
huffman:table([$H,$E,$L,$L,$O]).
そのようなASCII値を維持したいのですが、私のものは出力で整数に変更されます。プログラムがそれらを整数に解釈しないようにするにはどうすればよいですか?
erlang シェルから入力する関数があります。
huffman:table([$H,$E,$L,$L,$O]).
そのようなASCII値を維持したいのですが、私のものは出力で整数に変更されます。プログラムがそれらを整数に解釈しないようにするにはどうすればよいですか?
Erlang は文字と整数を区別しません。特に、Erlang の文字列リテラルのような"HELLO"
結果は list になり[$H, $E, $L, $L, $O]
ます。シェルはヒューリスティック (基本的にはすべての整数が印刷可能な Unicode 文字であることを確認する) によって、出力[72, 69, 76, 76, 79]
するか"HELLO"
. 私のシェルセッションの出力は次のとおりです。
Erlang R16B03 (erts-5.10.4) [64 ビット] [smp:4:4] [async-threads:10] Eshell V5.10.4 (^G で中止) 1> [$H、$E、$L、$L、$O]。 "こんにちは" 2>
$H
整数 72 の別の書き方であるように、Erlang に組み込まれているものとして出力する方法はありません$H
。この方法で値を出力するには、独自の関数を作成する必要があります。
あなたが示す例では、アルファベットの値を文字として出力しながら、小さな整数を整数として保持する必要があるようです。このようなものがうまくいくかもしれません:
maybe_char_to_string(N) when $A =< N, N =< $Z ->
[$$, N];
maybe_char_to_string(N) ->
integer_to_list(N).
これはそれが出力するものです:
3> foo:maybe_char_to_string($H).
"$H"
4> foo:maybe_char_to_string(1).
"1"
何かを文字列として出力したい場合は、次を使用します。
io:format("~s", [String]).