gpt4 book ai didi

functional-programming - 如何在 Erlang 中使用 fread 获取没有 ""的字符串

转载 作者:行者123 更新时间:2023-12-02 06:31:40 24 4
gpt4 key购买 nike

我的程序有一个恐惧:

{ok, [S]} = io:fread("entry: \n", "~s")

但我得到 {ok, "string"}

我只想获取字符串而不是引号。

因此我可以将它用于:

digraph:add_vertex(G, S)

并接收一个顶点字符串而不是“字符串”

我该怎么做?

最佳答案

这是错觉。引号实际上并不存在。外壳或其他显示机制可能会在使用某些上下文呈现时显示它们,以表示您正在显示的数据,但在这种情况下,引号实际上只是元数据:

这是你的情况:

1> {ok, [S]} = io:fread("entry: \n", "~s").
entry:
foo
{ok,["foo"]}

如果严格显示 S,您会看到它是一个只有 3 个字符的列表:

2> io:format("~w~n", [S]).                 
[102,111,111]
ok

如果你要求 io:format/2 一般地显示数据,尽管使用它对数据解释的最佳表示,它会认为'啊哈,这是一个字符串,我将把它显示为一个字符串':

3> io:format("~p~n", [S]).
"foo"
ok
4>

字符串显然只是列表,所以在这种情况下,必须决定显示为字符串还是列表,并且决定显示为字符串是因为列表字节都表示可打印字符。添加不可打印的字符将因此改变行为,如下所示:

5> io:format("~p~n", [[2|S]]).  
[2,102,111,111]
ok
6>

关于functional-programming - 如何在 Erlang 中使用 fread 获取没有 ""的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34250579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com