首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Erlang -可以使用List:append来将元素添加到字符串中吗?

Erlang -可以使用List:append来将元素添加到字符串中吗?
EN

Stack Overflow用户
提问于 2014-09-21 18:06:53
回答 1查看 370关注 0票数 0

这是我的函数,它解析一个加法方程。

代码语言:javascript
运行
复制
expr_print({num,X}) -> X; 
expr_print({plus,X,Y})->
             lists:append("(",expr_print(X),"+",expr_print(Y),")").

一旦在终端中执行,它应该是这样的(但目前不是这样):

代码语言:javascript
运行
复制
>math_erlang: expr_print({plus,{num,5},{num,7}}).
>(5+7)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-21 18:26:33

实际上,我们可以这样做,但在X中,{num, X}中的工作方式是数字而不是数字的字符串表示。

Erlang中的字符串只是数字列表。如果这些数字在wright范围内,它们可以打印为字符串。您应该能够找到详细的解释这里。因此,您想要做的第一件事就是确保对expr_print({num, 3}).的调用将返回"3"而不是3。您应该能够找到解决方案这里

第二件事是lists:append,它只使用一个参数,列表列表。所以你的代码看起来像这样

代码语言:javascript
运行
复制
expra_print({num,X}) ->
    lists:flatten(io_lib:format("~p", [X]));
expr_print({plus,X,Y})->
     lists:append(["(", expr_print(X),"+",expr_print(Y), ")"]).

这会给你带来一个很好的平面字符串/列表。

另一件事是,您可能不需要单一的列表。如果您打算将此写入文件,或发送TCP,您可能希望使用奥莱斯特,它更容易创建(您可以删除appendflatten调用),而且速度更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25962300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档