设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 24750|回复: 5
打印 上一主题 下一主题

lists:foldl的一个比较好的列子

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-15 00:04:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  今天遇到了一个比较好的例子,话不多说了,下面开始写我遇到的例子
-record(list,{one = 0, two =0, three= 0,four =0}).
-define(ONE,one).     -define(THREE,three).
-define(TWO,two).    -define(FOUR,four).

add(TypeList,Record_list) ->
Fun= fun({Type,Arg},List) ->
             case Type of
                 ?ONE -> List#list{List#list.one+1};
                 ?TWO -> List#list{List#list.two+1};
                 ?THREE -> List#list{List#list.three+1};
                 ? FOUR -> List#list{List#list.four+1}
             end
         end,
lists:foldl(Fun,Record_list,TypeList).

  这个函数add的作用是把列表TypeList中的元组一一对应加在
Record_list的记录中,虽然这看似是简单,但是在实际中的使用率非常高,
所以我才觉得这个例子非常好。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2015-1-23 10:22:33 | 只看该作者
Arg参数没有用到
而且返回的写法没问题吗
应该是
List#list{one = List#list.one+Arg}吧
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2015-1-24 00:18:52 | 只看该作者
youthy 发表于 2015-1-23 10:22
Arg参数没有用到
而且返回的写法没问题吗
应该是

  厉害,一针见血,你指正得非常对,可能冲忙写,连我都没留意到。多谢你的指教
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-1-24 00:20:45 | 只看该作者
-record(list,{one = 0, two =0, three= 0,four =0}).
-define(ONE,one).     -define(THREE,three).
-define(TWO,two).    -define(FOUR,four).

add(TypeList,Record_list) ->
Fun= fun({Type,Arg},List) ->
             case Type of
                 ?ONE -> List#list{one = List#list.one+Arg};
                 ?TWO -> List#list{two = List#list.two+Arg};
                 ?THREE -> List#list{three = List#list.three+Arg};
                 ? FOUR -> List#list{four = List#list.four+Arg}
             end
         end,
lists:foldl(Fun,Record_list,TypeList).
回复 支持 反对

使用道具 举报

5#
发表于 2015-1-25 19:29:47 | 只看该作者
high佬全 发表于 2015-1-24 00:20
-record(list,{one = 0, two =0, three= 0,four =0}).
-define(ONE,one).     -define(THREE,three).
-defi ...

我也是只懂些皮毛,多多交流
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2015-1-25 22:52:52 | 只看该作者
youthy 发表于 2015-1-25 19:29
我也是只懂些皮毛,多多交流

  我也是初哥,,所以有什么错也请你多多指教,同时你有什么好的东西记得分享下
给我这个小弟、
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-22 06:51 , Processed in 0.450731 second(s), 10 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表