2

Erlang では、\"二重引用符を意味するエスケープ文字です。

"\"test\""私の質問は、との違いは何""test""ですか? 私が尋ねる理由は、list_to_atomエラーを処理しようとしているからです:

> list_to_atom("\"test\"").
'"test"'
> list_to_atom(""test"").
* 1: syntax error before: test
4

2 に答える 2

5

""長さ0の文字列/リストです

\"文字列のコンテキストで使用される場合、エスケープされた二重引用符です。\"二重引用符 (つまり)だけで構成される文字列が必要な場合は、次のようにします"\""

""test""は構文エラーであり、"" test ""どちらが構文的に であるかに違いはありません<list><atom><list>。何を達成しようとしていますか?

于 2012-10-29T22:52:22.887 に答える
2

アトムはガベージ コレクションされないため、アトムを動的に生成することはお勧めしません。

list_to_existing_atom/1ユーザー入力を読み取るときに使用することをお勧めします。そうしないと、メモリが不足して (システムが十分に長く動作している場合でも、Erlang はそのためのシステムですよね?)、仮想マシン全体がクラッシュする可能性があります。

list_to_existing_atom/1アトムが存在しない場合はエラーをスローし、存在する場合はアトムを返します。のような構造は、またはブロックcatch list_to_existing_atom(some_atom)と組み合わせると役立つ場合があります。シェルで試してみて、一番気に入ったものを見つけてください。case .. oftry ... catch

この回答が質問に関係がないように思われる場合は、まだコメントを投稿することは許可されていないことに注意してください。これは、チョップの回答へのコメントの質問に回答します。

アトムが入力されるまでキーボードから読み取る関数を作成する必要があります。get_line と list_to_atom でこれを行う必要があります。– オチノザ

于 2013-09-25T11:22:12.100 に答える