一个蛮简单的程序 输入一串字符串(list)然后执行:
-module(list_apply). -export([apply/1]). apply(Str) -> re_run(Str). re_run(Str) -> Res=re:run(Str,"\\s*(.*)\\s*:\\s*(.*)\\((.*)\\)\\.",[{capture,[1,2,3],list}]), case Res of nomatch -> io:format("输入有误"); {match,[M,F,A]} -> do_apply(string:strip(M),string:strip(F),A) end. do_apply(M,F,A) -> try {ok,Token,_}=erl_scan:string("["++ A ++"]."), {ok,Terms}=erl_parse:parse_term(Token), erlang:apply(list_to_atom(M),list_to_atom(F),Terms) catch error:Case -> io:format("error:~p~n",[Case]) end.
代码比较简单
先用正则匹配一下 匹配成功并抽取模块 函数和参数 接下去就做参数的解析
参数的解析使用了erl_scan:string/1先变成tokens的形式 然后转给erl_parse的parse_term/1处理
为了方便直接进行异常处理
这边的string:strip/1是去除string(list)前后的空格 用ungreedy模块那边的空格是去得掉 但是函数前的空格居然还是会被保留的跪Orz...
输入输出如下:
22> c(list_apply). {ok,list_apply} 23> list_apply:apply("erlang:time()."). {14,7,38} 24> list_apply:apply("string:strip(\"ac \")."). "ac" 25> list_apply:apply("erlang:time(12)."). %erlang:time/1这个函数不存在的 error:undef ok 2> list_apply:apply("io:format(\"hello~p~n\",[\"nihao\"])."). hello"nihao" ok 3> list_apply:apply("io : format(\"hello~p~n\",[\"nihao\"])."). hello"nihao" ok
相关推荐
- **Erlang编程**:指的是使用Erlang语言进行软件开发的整个过程。 - **编程**:指的是编写代码、软件开发的活动。 - **并发**:指的是同时进行多个任务,Erlang语言在这方面的表现尤为突出。 - **服务器**:服务器...
《Erlang编程》是一本深入探讨Erlang语言的图书,主要面向对并发处理、分布式系统和高可用性有需求的开发者。Erlang是一种为构建大规模并发系统而设计的函数式编程语言,它源自爱立信,以其在电信行业的成功应用而...
“即便我已经使用Erlang多年,在编程的时候仍然需要参考《Erlang编程指南》。不同层次的Erlang程序员都会发现本书是有价值的学习和参考资料。”, ——Steve Vinoski,《IEEE Internet Computing》专栏作家, 《Erlang...
Erlang是一种高级编程语言,专为构建并发、分布式、容错的系统设计。Erlang语言的编程规则和约定对于保证代码的可读性、可维护性、性能和稳定性至关重要。本文将对Erlang编程规则的中文翻译版本中的部分内容进行详细...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...
erlang编程语言圣经 erlang从业人员的必备书籍 erlang语言开发入门
Erlang是一种强大的并发编程语言,特别适合于构建高可用性、分布式系统,尤其是在电信、银行和互联网领域广泛应用。在给定的标题“erlang 24.0 龙芯 loongarch64 预编译版本”中,我们可以看到这个软件包是为龙芯...
Erlang程序设计(中文版-完整书签)&Erlang编程指南(中英文版)
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在...
在Erlang编程语言中,进程是其核心特性之一,它们是并发执行的实体,类似于其他语言中的线程。在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过...
内容概要:本文档详细介绍了Erlang编程语言及其并行编程模型,并重点阐述了Erlang OTP框架的特性和应用场景。首先,文档简述了Erlang语言的特点,包括轻量级进程、模式匹配和热代码升级等特性,以及它在构建高可用、...
2. **并发编程**:Erlang的并发模型是其独特之处。它通过轻量级进程(Lightweight Processes, LWP)实现并发,进程间通信(Inter-Process Communication, IPC)主要依赖消息传递。Concurrent Programming in ERLANG...
Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ ...
在《Erlang编程指南》这本书中,作者Francesco Cesarini和Simon Thompson深入浅出地介绍了Erlang语言的基础和高级特性,涵盖了从进程通信到并发设计模式,再到OTP框架的使用。通过学习这本书,读者可以全面理解...
根据提供的文件信息,这份Erlang编程中文学习手册涵盖了Erlang编程语言的基础知识和一些进阶内容,旨在帮助读者从入门到初中级水平的提升。以下是手册中提到的Erlang编程的相关知识点。 首先,手册介绍了Erlang语言...