`

[练习]erlang编程练习1

 
阅读更多

这边就写点小代码,不求写得很精准能用就好了(跪....

 

统计文件数量:

%%%===============================
%%% @author cc
%%% @description
%%% 查找并统计对应后缀的文件
%%% @end
%%%===============================

-module(seek_file).
-export([seek/1,count/2]).
-define(FLAG,seekfile).

%%程序启动入口,初始化一个监听进程用于统计
seek(Dir) ->  
  Pid=spawn(seek_file,count,[0,[]]),
  case whereis(?FLAG) of
     undefined -> register(?FLAG,Pid);
	 _         -> unregister(?FLAG),register(?FLAG,Pid)
  end,
  seek_inner(Dir,0).

%%搜寻文件的函数  
seek_inner(Dir,No) -> 
   Files=filelib:wildcard(Dir ++ "/*"),
   deal_with(Files,No).
   
%%用于监听的函数   
count(Sum,List) ->
  receive 
    {add,X,File} -> count(Sum+X,[File] ++ List);
	 stop -> io:format("~p~n ~p~n",[Sum,List])
  end.

%%deal_with/2用于对文件进行判断
%%这边用了很多的递归 如果No为0并
%%且列表为空了那么程序就结束了
deal_with([],No) when No/=0 -> ok;

deal_with([],No) -> ?FLAG ! stop;

deal_with([File|Others],No) -> 
  case filelib:is_dir(File) of
     %%间接递归的函数标记为1
     true -> seek_inner(File,1);
	 false -> 
	     case re:run(File,".*\\.java$",[]) of
		    nomatch -> ok;
			{match,_}-> ?FLAG ! {add,1,File}
		  end
   end,
   deal_with(Others,No).
   

    

   输出:

22> c(seek_file).
seek_file.erl:33: Warning: variable 'No' is unused
{ok,seek_file}
23> seek_file:seek("g:/workbench/web").
5
 ["g:/workbench/web/huffman/src/org/cc/mediawork/Huffman.java",
  "g:/workbench/web/huffman/src/org/cc/mediawork/Huffman 2.java",
  "g:/workbench/web/huffman/src/org/cc/mediawork/Huffman - 3.java",
  "g:/workbench/web/huffman/src/org/cc/mediawork/Huffman - .java",
  "g:/workbench/web/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/first/org/apache/jsp/index_jsp.java"]
stop

 

分享到:
评论

相关推荐

    Erlang编程指南

    “即便我已经使用Erlang多年,在编程的时候仍然需要参考《Erlang编程指南》。不同层次的Erlang程序员都会发现本书是有价值的学习和参考资料..., 《Erlang编程指南》每章末尾都提供了练习题,并且由简单的示例贯穿全书。

    erlang 入门练习

    通过分析`client.erl`,我们可以逐步了解Erlang编程的核心概念,并进一步深入学习这个强大的并发编程语言。在实际项目中,Erlang常用于构建大规模、高并发的系统,如网络服务器、分布式系统等。

    并行编程语言Erlang:Erlang OTP框架及其应用开发指南

    内容概要:本文档详细介绍了Erlang编程语言及其并行编程模型,并重点阐述了Erlang OTP框架的特性和应用场景。首先,文档简述了Erlang语言的特点,包括轻量级进程、模式匹配和热代码升级等特性,以及它在构建高可用、...

    Erlang入门:构建application练习2

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在...

    Erlang程序设计,包含完整目录和全套源码

    这个压缩包包含了Erlang程序设计的完整目录和源码,是学习和理解Erlang编程的重要资源。 Erlang的并发特性源于其轻量级进程模型,每个进程都有自己的内存空间,进程间通信通过消息传递实现,这种设计降低了并发执行...

    erlang websocket 练习

    在IT行业中,Erlang是一种面向并发的编程语言,它被广泛用于构建高可靠性、分布式系统,尤其是在电信和实时计算领域。WebSocket协议则是一种在Web上实现双向通信的协议,它允许服务器和客户端进行持久连接,从而实现...

    Erlang入门:构建application练习5(监督树)

    Erlang是一种面向并发的、函数式编程语言,特别适合于构建高可用性和容错性的分布式系统。...这个练习帮助初学者理解Erlang OTP的设计原则和实际应用,是深入学习Erlang并发编程和系统架构的重要步骤。

    erlang简单聊天练习

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、容错性和分布式系统。它的设计灵感来源于过程通信理论,支持轻量级进程(processes)和消息传递,使得在Erlang...

    Erlang入门:构建application练习4(进程link的作用)

    在Erlang编程语言中,进程是其核心特性之一,它们是并发执行的实体,类似于其他语言中的线程。在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过...

    Erlang程序设计(第二版)及源码

    本书由Erlang之父Joe Armstrong编写,是毋庸置疑的经典著作。书中兼顾了顺序编程、并发编程和...第2版全新改写,反应了自第1版面世以来Erlang历经的所有变化,添加了大量针对初学者的内容,并在每章后都附上了练习题。

    Erlang Programming 导读.pdf

    - **实践项目**: 结合实际案例进行练习,比如实现一个简单的 Web 服务器或聊天应用,通过实践加深对 Erlang 特性的理解。 - **社区交流**: 加入 Erlang 社区,与其他开发者交流经验和技术问题,参与开源项目也是提高...

    erlang学习资料

    学会创建、通信和管理进程是Erlang编程的关键。 3. **OTP(Open Telecom Platform)框架**:OTP是Erlang的标准库,提供了一套用于构建可靠、容错系统的模块和设计模式。其中,Mnesia数据库、GenServer行为、...

    erlang资源

    这个“erlang资源”压缩包显然包含了一系列学习Erlang编程语言的材料,这可能是教程文档、代码示例、讲义或者练习题。以下是一些关于Erlang的关键知识点,以及可能在这些资源中找到的相关内容: 1. **函数式编程**...

    Erlang程序设计(英文版)

    递归是Erlang编程中不可或缺的一部分,因为Erlang的列表操作通常是基于递归的。Erlang内置了调试和跟踪工具,让开发者可以轻松地发现和修复并发程序中的错误。 在学习Erlang的过程中,将不可避免地需要掌握网络编程...

    Erlang OTP 并发编程实战(高清中文版) pdf

    建议学习实践: ...1. 要坚持实践高性能大并发编程的实践 2. Erlang基础->OTP高并发编程实践PDF->Elixir 3. 认真实践本书中的知识点, 动手练习, 高并发软件实时大容量的服务器开发可打败C++的大团队开发

    katas:Elixir,Haskell,Erlang等的编程练习

    标题中的“katas”指的是编程练习或挑战,通常用于提高编程技能和理解各种编程语言的特性。这个资源涉及了Elixir、Haskell和Erlang这三种编程语言,它们都是函数式编程语言,但各有其独特之处。 1. **Elixir**: ...

    Learn You Some Erlang for Great Good!

    Erlang是一种专为并发、分布式系统设计的编程语言,由瑞典电信设备制造商爱立信于1986年开发,最初是作为内部项目的一部分,用于支持大规模并发通信。Erlang语言特别适合于编写需要极高并发处理能力的软件,如电信...

Global site tag (gtag.js) - Google Analytics