不知道标题这么取是否恰当
就是生成单词内的索引
看《改变未来的九大算法》(是本民科 清晰易懂)的第二章 仿照里面的索引 如下:
文本里内容和图中也是一样的
先把结果打出来 因为我很懒 就不对dict做解析了 直接返回的就是个dict 结果如下:
29> filereader:read("G:\erl_workbench\pattern", "*.txt"). File name:"1.txt" File name:"2.txt" File name:"3.txt" {{dict,3,16,16,8,80,48, {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, {{[], [[3|{"3.txt"}]], [],[],[],[], [[2|{"2.txt"}]], [],[],[],[], [[1|{"1.txt"}]], [],[],[],[]}}}, {dict,9,16,16,8,80,48, {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, {{[["on",{1,4},{2,4}]], [["dog",{2,2},{3,6}]], [],[], [["while",{3,4}]], [],[], [["cat",{1,2},{3,2}],["sat",{1,3},{3,7}]], [], [["mat",{1,6},{2,6}]], [],[], [["the",{1,...},{...}|...],["stood",{...}|...],[[...]|...]], [],[],[]}}}}
代码如下:
%% @author cc fairjm %% fair-jm.iteye.com %% @doc @todo read files and return indexes of the words in the files. -module(filereader). -export([read/2,read_info/3]). read(Dir,WildCard) -> process_flag(trap_exit, true), file:set_cwd(Dir), Files=filelib:wildcard(WildCard), {_Num,FileDict}=lists:foldl(fun readFile/2,{1,dict:new()}, Files), WordDict=recinfo(dict:new(),0,length(Files)), {FileDict,WordDict} . readFile(Filename,{In,Dict}) -> io:format("File name:~p~n", [Filename]), Self=self(), spawn_link(?MODULE,read_info,[Filename,In,Self]), {In+1,dict:store(In, {Filename}, Dict)} . read_info(Filename,Number,To) -> %io:format("read_info ~p",[Filename]), case file:read_file(Filename) of {ok,Data}-> Tokens=string:tokens(binary_to_list(Data), " \r\n"), {_N,Dict}=lists:foldl( fun(E,In) -> {N,Dict}=In, {N+1,dict:append(E, {Number,N}, Dict)} end, {1,dict:new()}, Tokens), To ! {ok,Dict}; {_Other} -> To ! error end . recinfo(Dict,Now,Size) -> case Now==Size of true -> Dict; false -> receive {ok,Data} -> %io:format("data received ~p", [Data]), NewDict=dict:merge(fun(_Key,V1,V2)-> V1++V2 end, Dict, Data), recinfo(NewDict,Now+1,Size); {_Other} -> %io:format("error"), recinfo(Dict,Now+1,Size) end end.
在IDE里操作一切正常 但是到erl中(win下) 发现代码中的 file:set_cwd/1没起作用 要手动在erl中 file:set_cwd/1才可以....不知道为什么
API方法其实只有一个 就是read/2 那个read_info/3也导出是因为不导出spawn_link/3那就无法运行了(额 erlang一些地方都忘了 有人知道回答一下吗?)
相关推荐
标题中的“erlang test 生成 dets”表明我们要讨论的是使用Erlang编程语言进行测试,并生成DETS(Disk-based Erlang Terms Storage)文件的过程。DETS是Erlang提供的一种持久化数据存储机制,类似于关系数据库的表,...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和容错系统。本教程将带你入门Erlang,通过实践来学习其基本概念和语法。 在Erlang中,程序是由一系列的进程...
我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...
**Erlang编程语言在生成双色球小程序中的应用** Erlang是一种功能强大的并行、分布式计算语言,尤其在处理高并发、容错性系统方面表现出色。在这个双色球小程序中,Erlang的独特特性和内置函数(BIFs,Built-in ...
在MATLAB中,我们可以利用不同的函数或技巧来生成服从Erlang分布的随机数。以下是两种常用的方法: **方法一:`gammavariate`函数** MATLAB中的`gammavariate`函数实际上是调用了C语言库的实现,可以生成伽马分布...
结合给定的标题“erlang websocket 练习”和描述,我们可以推断这是一个关于使用Erlang实现WebSocket服务的实践项目。 首先,让我们详细了解一下Erlang中的WebSocket实现。在Erlang中,通常会使用 Cowboy 或 YAWS ...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
6. **编译器升级**:Erlang的BEAM虚拟机和编译器可能会有优化,使得编译速度更快,生成的代码更高效。 作为“源码软件”,Erlang 25.0同样提供了源代码,开发者可以深入研究其内部工作原理,进行定制化开发,或者为...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
在这个"Erlang入门:构建application练习5(监督树)"中,我们将探讨如何构建一个包含监督树的应用,这是Erlang OTP(开放电信平台)设计模式中的核心部分。 监督树是Erlang OTP设计原则的重要组成部分,它用于管理...
"erlang简单聊天练习"是一个使用Erlang语言实现的轻量级聊天应用示例,它展示了Erlang在并发通信、分布式系统和容错性方面的优势。通过学习和实践这个项目,开发者可以更好地理解和掌握Erlang的基础知识,以及如何...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
"otp_win64_20.0.exe"是实际的安装文件,这意味着尽管标题提到了Erlang9,但压缩包内提供的实际上是OTP的20.0版本。这可能是由于在发布时,Erlang 20已经是基于OTP 20的版本,而Erlang 9可能不再支持或者已经过时。 ...
这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...
erlang安装包
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson于1986年开发,主要用于构建高可用性、分布式系统。Erlang的设计目标是支持大量并发连接,容错性强,易于编写实时系统。Erlang采用actor模型...
Erlang是一种面向并发、高容错性的函数式编程语言,尤其在构建分布式系统和实时软实时应用领域中表现出色。这个压缩包包含了Erlang程序设计的完整目录和源码,是学习和理解Erlang编程的重要资源。 Erlang的并发特性...