如何将输入作为元组并将其存储在Erlang中的变量中?

如何将输入作为元组并将其存储在Erlang中的变量中?,erlang,erl,Erlang,Erl,我想从用户那里获取输入并将其存储在变量中,以便将其传递给另一个函数 提前谢谢 1> {ok, [T]} = io:fread("enter text: ", "~s"). enter text: {100,c} {ok,["{100,c}"]} 2> T. "{100,c}" 然后您可以获得如下所需的值: 5> {ok, Tokens, _} = erl_scan:string(T). {ok,[{'{',1},{integer,1,100},{',',1},{atom,1,

我想从用户那里获取输入并将其存储在变量中,以便将其传递给另一个函数

提前谢谢

1> {ok, [T]} = io:fread("enter text: ", "~s").
enter text: {100,c}
{ok,["{100,c}"]}
2> T.
"{100,c}"
然后您可以获得如下所需的值:

5> {ok, Tokens, _} = erl_scan:string(T).
{ok,[{'{',1},{integer,1,100},{',',1},{atom,1,c},{'}',1}],1}
6> Tokens.
[{'{',1},{integer,1,100},{',',1},{atom,1,c},{'}',1}]
7>{_, _, A1} = lists:nth(2, Tokens).
{integer,1,100}
8> {_, _, A2} = lists:nth(4, Tokens).
{atom,1,c}
9> {A1, A2}
{100, c}
根据您可以使用,或。 例如:

%以字符串形式获取所需格式的输入,您需要对其进行解析。
%每个~ts表示我需要一个unicode字符串。
1> {好的,[FirstName,LastName]}=io:fread(“你叫什么名字?”,“~ts~ts”)。
你叫什么名字?富吧
{好的,[“foo”,“bar”]}
2> 名字。
“福”
3> 姓。
“酒吧”
%获取字符串中定义长度的输入,您需要对其进行解析:
4> NumberOfCharacters=7。
7.
5> FullName=io:get_chars(“你叫什么名字?”,NumberOfCharacters)。
你叫什么名字?富吧
“富吧”
6> 全名。
“富吧”
%将整行作为字符串的输入,您需要对其进行解析:
7> FullName2=io:get_line(“你叫什么名字?”)。
你叫什么名字?富吧
“foo-bar\n”
8> 全名2。
“foo-bar\n”
%获取Erlang术语作为输入:
9> {ok,{FirstNameAtom,LastNameAtom}=FullNameTuple}=io:read(“你叫什么名字?”)。
你叫什么名字?{foo,bar}。
{好的,{foo,bar}
10> 名字是原子。
福
11> LastNameAtom。
酒吧
12> 全名元组。
{foo,bar}
13> {ok,Input}=io:read(“输入文本?”)。
输入文本?{100,c}。
{好的,{100,c}}
14> 输入。
{100,c}

谢谢你的回答。但是我需要将元组输入作为{100,c}。上面给出了类似于“{100,c}”的字符串。更新了我的答案。谢谢@Pouriya,但最后的第二个答案是使用io:read,它多次请求输入,这与正常行为中的fread不同。read/1函数需要一个erlang表达式,该表达式必须以点结尾(例如,hello。)现在明白了。谢谢