`

erlang编程指南 练习3-4

阅读更多

练习3-4    编写创建一个数据库模块db.erl,它能够模拟数据库 存储,检索和删除元素。

提示使用列表和元组作为你的主要数据结构,当测试程序时,请记住Erlang中变量是单次赋值。

接口:

db:new()       =>Db.

db:destroy(Db)     =>ok.

db:write(Key,Element,Db)  =>newDb.

db:read(Key,Db)  =>{ok,Element}|{error,instance}.

db:match(Element,Db) =>[key1,.......,keyN].

 

代码如下:

 

%% Author: liu.guangjun
%% Created: 2011-12-5
%% Description: TODO: Add description to db
-module(db).

%%
%% Include files
%%

%%
%% Exported Functions
%%
-export([new/0,write/3,delete/2,read/2,match/2]).
% -export([destroy/1]).
%%
%% Local Functions
%%
new()->[].
%destroy(Db)-> f(Db).
write(Key,Element,Db)->
	[{Key,Element}|Db].		  
		
%% read(Key,Db)->
%% 	case lists:keyfind(Key, 1, Db) of
%% 		{_,Element} ->{ok,Element};
%% 		false->{error,instance}
%%     end.

read(_,[])->{error,instance};
read(Key,[H1|T1])->
    case H1 of 
		{Key,Element} ->
			{ok,Element};
		_ ->  
			read(Key,T1)
  	end.
	


delete(Key,Db)->delete_element(Key,Db,[]).
delete_element(_,[],List2)->List2;
delete_element(Key,[H1|T1],T2)->
	case H1 of
		{Key,_} ->
	   		delete_element(Key,T1,T2);
 		_->
			delete_element(Key,T1,[H1|T2])
 	end.

match(Element,Keys)->match_element(Element,Keys,[]).
match_element(_,[],Keys)->Keys;
match_element(Element,[H|T],T2)->
	case H of
		{H2,Element} ->
			match_element(Element,T,[H2|T2]);
		_->
			match_element(Element,T,T2)
	end.
	

	
	

 

 

 

 

 

0
3
分享到:
评论

相关推荐

    Erlang编程指南

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

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

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

    Erlang程序设计(英文版)

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

    programming-elixir:《编程灵丹妙药》书籍练习

    《编程灵丹妙药》是一本面向Elixir编程语言的学习指南,由Dave Thomas撰写,旨在帮助读者深入理解和掌握Elixir的精髓。这本书以其独特的视角和生动的比喻,将编程概念转化为易于理解的“灵丹妙药”。在描述中提到的...

    lix剂-nlw4

    3. **元编程**:Elixir支持元编程,允许在运行时动态地创建和修改代码,这使得编写灵活和可扩展的库变得容易。 4. **OTP(Open Telecom Platform)框架**:Elixir充分利用了OTP,这是一个为构建分布式、容错系统...

    cs4550-hw06

    【标题】"cs4550-hw06" 是一个与计算机...总的来说,cs4550-hw06 作业会涵盖 Elixir 语言的核心概念和实践,通过编程练习帮助学生深化对 Elixir 及其生态系统理解,提升他们在并发、分布式计算和函数式编程方面的技能。

    tp1_rabbitmq

    【描述】中提到的步骤是RabbitMQ基础操作的实践指南: 1- **启动RabbitMQ服务器**:RabbitMQ是基于Erlang语言开发的消息中间件,它提供了一个可扩展、高可用性的消息队列服务。在使用前,我们需要先安装RabbitMQ,...

    Walter3semestre

    Elixir 是一种基于 Erlang VM(BEAM)的函数式编程语言,设计用于构建可扩展的并发系统,常用于分布式和实时系统。 在压缩包 "Walter3semestre-main" 中,我们通常可以期待找到一系列与 Elixir 编程相关的资源,...

    互联网开发者进阶书籍1.zip

    8. **并发编程模型**:除了传统的线程模型,还有如Actor模型(例如Erlang语言),Promise/Future模式(用于异步编程),反应式编程(如Reactor或RxJava)等。 9. **Java并发库**:Java提供了丰富的并发工具类,如`...

    万灵药研究组

    4. **项目模板**:研究组可能提供了基础的项目模板,便于成员进行实践练习,这些模板可能涵盖了一些实际应用场景,如实时聊天应用、Web服务器等。 5. **测试用例**:为了确保代码质量,研究组可能分享了一些测试...

Global site tag (gtag.js) - Google Analytics