不知道标题这么取是否恰当
就是生成单词内的索引
看《改变未来的九大算法》(是本民科 清晰易懂)的第二章 仿照里面的索引 如下:
文本里内容和图中也是一样的
先把结果打出来 因为我很懒 就不对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,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...
NULL 博文链接:https://laoyaos.iteye.com/blog/2022928
Erlang入门:构建application练习3,实例演示如果构建一个最简单的Erlang Application
NULL 博文链接:https://jias.iteye.com/blog/557863
erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent
erlang 安装包
Erlang入门:构建application练习5(监督树),以实例完全演示监督树的用法,Erlang入门必须知道的那点事
Erlang及其应用Erlang及其应用Erlang及其应用
随机生成一注双色球,包含了Erlang链表连接,取随机数等BIF。
erlang25.0 windows版本
erlang otp25 win安装包
Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。 使用Erlang编写出的应用运行时...
ErlangB和ErlangC计算工具(exe可执行文件+excel两个) ErlangB和ErlangC计算工具(exe可执行文件+excel两个)
erlang22最新下载包 erlang22.1.tar.gz erlang22最新下载包 erlang22最新下载包
erlang文献及资料汇总 入门资料: erlang中文手册(R11B 文档译文,最适合入门) erlang位运算与二进制解析 erlang二进制高效编程 erlang异常处理详解 开发经验: 面对软件错误构建可靠的分布式系统 编写分布式的 ...
erlang 中文基础教程erlang 中文基础教程
lambdapad, 使用Erlang的static 站点生成器 是的,Erlang LambdaPad Erlang power站点生成,仓库 !查看Lambda在 lambdapad.io 生成文档。 这是递归 !
erlang安装包
用两种不同的方法产生服从erlang分布的随机数