tux*_*21b 20

我不知道是否可以更改shell的默认行为,但您至少可以使用io:format正确格式化输出.

这是一个例子:

1> io:format("~p~n", [[65, 66, 67]]).
"ABC"
ok
2> io:format("~w~n", [[65, 66, 67]]).
[65,66,67]
ok
Run Code Online (Sandbox Code Playgroud)

由于shell仅用于实验/维护,io:format()因此至少应该足以满足您的实际应用需求.也许您还应该考虑编写自己的格式/打印方法,例如formatPerson()或类似的东西,它可以很好地格式化所有内容.


Dav*_*rth 8

我倾向于通过在shell中将一个原子添加到我的列表中来实现.

例如:

Eshell V5.7.4  (abort with ^G)
1> [65,66,67].
"ABC"
2> [a|[65,66,67]].
[a,65,66,67]
Run Code Online (Sandbox Code Playgroud)

当然也可以是[a,65,66,67].但是[a | fun_that_returns_a_list()]会在大部分时间打印"正确的东西(ish)"


mpm*_*mpm 8

您可以使用从Erlang R16B开始的shell:strings/1函数禁用此类行为.

请记住,这是所有节点shell的全局选项,在完成播放后将其设置为更长的生命节点中的shell可能是明智的.


leg*_*cia 5

从Erlang/OTP R16B开始,您可以使用函数shell:strings/1来打开或关闭它.请注意,它还会影响实际意味着字符串的事物的打印,例如"foo"在以下示例中:

1> {[8,9,10], "foo"}.
{"\b\t\n","foo"}
2> shell:strings(false).
true
3> {[8,9,10], "foo"}.   
{[8,9,10],[102,111,111]}
Run Code Online (Sandbox Code Playgroud)