免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 104359176
打印 上一主题 下一主题

Perl 语言缺失的语言特性 [复制链接]

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
11 [报告]
发表于 2013-08-21 19:36 |只看该作者
回复 9# 104359176


    Perl 的 for (LIST) {} 循环循环变量相当于别名,对循环变量赋值就是直接修改数组,包括 values    $_ *= 2 for values %hash; 就是 %hash 里的值都 x2 在保存到原来的位置

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
12 [报告]
发表于 2013-08-21 19:47 |只看该作者
回复 11# zhlong8

是的,利用这个特性可以简化这个模型,但通过函数的副作用来改变一个变量是一种危险的行为,因为这个特性不是所有的语言都有,尤其在函数式编程中,这种特性被认为是错误的。我不想把代码构筑在一些和语言相关的特性上,因为这些特性可能是一个设计错误。


   

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
13 [报告]
发表于 2013-08-21 20:58 |只看该作者
回复 12# 104359176


    既然你懂lisp就应该明白抽象出来个 forall 这个概念就足够了,每种语言怎么实现和你的任务并没什么关系。

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
14 [报告]
发表于 2013-10-12 16:13 |只看该作者
怎么遍历就怎么存啊,这是任何函数编程的基本功

#!perl
use strict;
use warnings;
use Data:umper;
my $Array = [
    [1, 2, 3],
    [ [4,5,6], [7,8,9]],
    [ [ [ 1,2,3],[4,5,6] ], [ [7,8,9], [1,2,3]]],
];

my $Sub_Traverse;
my $Sub_Oparator=sub{
    return $_++;

};


$Sub_Traverse=sub{
    my $Arg_ = shift;
    my $Oper_ = shift;
    my $R_=[];
    for (@$Arg_){
        if (ref $_ eq 'ARRAY') {
            push $R_,$Sub_Traverse->($_,$Oper_);
        }
        else {
            $Oper_->($_);
            push $R_,$_;
   
        }
    }
    return $R_;
};

print Dumper $Sub_Traverse->($Array,$Sub_Oparator);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP