Erlang 为什么io:format在\n执行相同操作时支持~n?

Erlang 为什么io:format在\n执行相同操作时支持~n?,erlang,escaping,otp,Erlang,Escaping,Otp,这两者的输出相同: 1> io:format("Hello, world!~n"). Hello, world! ok 2> io:format("Hello, world!\n"). Hello, world! ok 为什么io:format支持~n而\n做同样的事情?有什么区别吗?根据“编程Erlang”~n输出特定于平台的新行序列(\n在Unix上,\r\n在Windows上,等等)。我认为\n只是写\n字符,但不确定。根据控制序列的一般格式是~F.p.PadModC。因此格

这两者的输出相同:

1> io:format("Hello, world!~n").
Hello, world!
ok
2> io:format("Hello, world!\n").
Hello, world!
ok

为什么
io:format
支持
~n
\n
做同样的事情?有什么区别吗?

根据“编程Erlang”
~n
输出特定于平台的新行序列(
\n
在Unix上,
\r\n
在Windows上,等等)。我认为
\n
只是写
\n
字符,但不确定。

根据
控制序列的一般格式是~F.p.PadModC
。因此格式必须以
~
开头,字符
n
是控制序列之一,定义为
写新行<代码>\n
不是一种格式。

很抱歉误解了这个问题。是的,
\n
只是一个普通字符,所以它是按原样输出的。否则,是的,你是对的,
~n
是为特定于平台的新产品线设计的。是的,但可能是这样。我想知道是否仍有可能进行修补,或者如果~n突然生成CRLF,是否会有太多程序在Windows下崩溃,因为以前从未出现过这种情况。