打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于Squirrel3的Lambda表达式
分类: 我的工作 2009-12-13 15:36 316人阅读 评论(2) 收藏 举报

Squirrel 刚发布了Squirrel3 beta2版本,一直没有时间研究它,这个周末,终于决定仔细看看。在Squirrel3 alpha的时候,就大致知道要加入Lambda表达式,不过Squirrel本来就将函数当成一个内部变量,Lambda表达式似乎意义不是很大。

Squirrel3的Lambda表达式大概是这样应用的:

exp := '@' '(' paramlist ')' exp

例如:local myexp = @(a,b) a + b

这等同于 local myexp = function(a,b) { return a + b; }


因此,这个Lambda表达式的意义也就是写法上稍微的简洁,只是不知道Alberto Demichelis在实现的时候是否对Lambda表达式做过优化。


在Squirrel3中,对Lambda的最大支持是在Array上提供了好几种内部方法,根据Alberto Demichelis的文档,增加了以下四种内部方法:


1:map(func(a)),对Array的每个元素执行func(a)函数(或者Lambda表达式),将产生的值放入一个新的数组,并返回这个数组。这个内部方法有点意思,如果从数学角度看,这相当于一个映射变换,也许不是什么革命性的东西,但可以减少代码的编写量。

2:apply(func(a)),这个内部方法的功能与map相似,只是不会产生新数组,而是将产生的值直接替换原数组的值。

3:reduce(func(prevval,curval)),这个方法比较奇怪,它相当于一个叠加器,将数组的第一个元素传递给函数以后,再将之前函数的返回值与后续的元素依次传递给函数,最后得到的函数返回值为输出值,难道是离散卷积,我得去查查数学书,不知道有什么用处。

4:filter(func(index,val)),这个方法实现一个过滤器,将数组的序号和值传递给函数,如果函数返回true,就将这个值加入到新数组,否则就过滤掉,最后产生的新数组作为输出。

今天大致研究了这些东西,不知道这些新特性对自己的工作是否有用了

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
极简python教程06:生成器和匿名函数
Java 8 Lambda函数编程【面试+工作】
C# 3.0 特性预览
C++中的函数对象与Lambda表达式
Python Lambda函数竟有这么多用法
C 一般人看不懂的东西,C 11标准之Lambda表达式深度解析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服