在二郎\之間的區別’,\"
是一個轉義字符,這意味着雙引號。是什麼「和‘二郎
我的問題是,是什麼"\"test\""
和""test""
區別?我想問的原因是因爲,我想處理list_to_atom
錯誤:
> list_to_atom("\"test\"").
'"test"'
> list_to_atom(""test"").
* 1: syntax error before: test
在二郎\之間的區別’,\"
是一個轉義字符,這意味着雙引號。是什麼「和‘二郎
我的問題是,是什麼"\"test\""
和""test""
區別?我想問的原因是因爲,我想處理list_to_atom
錯誤:
> list_to_atom("\"test\"").
'"test"'
> list_to_atom(""test"").
* 1: syntax error before: test
""
是長度的字符串/列表0
\"
只是一個轉義雙 - 在字符串的上下文中使用時。如果你想有一個包含只是一個雙引號(即\"
)的字符串,那麼你可以做:"\""
。
""test""
是語法錯誤,與"" test ""
沒有什麼區別,它在語法上是<list><atom><list>
。你想達到什麼目的?
它不建議動態生成原子作爲他們從來沒有垃圾回收。
讀取用戶輸入時,您最好使用list_to_existing_atom/1
。否則,可能會導致內存不足(在系統運行時間足夠長的情況下;但是,嘿,這就是Erlang所用的系統,不是嗎?)並導致整個虛擬機崩潰。
list_to_existing_atom/1
將拋出的情況下,原子不存在,如果存在返回的原子錯誤。像catch list_to_existing_atom(some_atom)
的構建體可能證明有用加上case .. of
或try ... catch
塊。在殼中嘗試一下,看看你最喜歡什麼。
如果這個答案似乎風馬牛不相及的問題,那麼請注意,我不能還沒有發表評論,所以這個答案中挑起大梁的回答的意見,即:
I have to write a function that reads from keyboard until an atom is typed. I have to do this with get_line and list_to_atom. – otisonoza
我要編寫一個從鍵盤讀取的函數,直到輸入一個原子爲止。我必須用get_line和list_to_atom來做到這一點。 – otisonoza