免费注册 查看新帖 |

Chinaunix

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

请教大家一个问题哦:使用元编程技术“做”人 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-09-13 18:53 |只看该作者
原帖由 uppet 于 2007-9-13 18:31 发表
加入新方法可以使用AUTOLOAD方法。。
一般元编程的使用者是库作者或者framework作者。。。
一般用户用的不多。。

谢谢。在perl中有没有什么名气比较大的使用元编程技术的模块?

不是很明白元编程的意义,希望有哪位能讲解一下。

论坛徽章:
0
12 [报告]
发表于 2007-09-13 23:48 |只看该作者
Mark Jason Dominus(《Higher-Order Perl》一书的作者,perl小牛人一个)。
在他的书中讲到很多有用的函数式编程技术,基本有一些要用到元编程。

阁下可以到CPAN下个Memoize模块来研究。
以阁下的水平,其实多问无益。建议你看几本书吧,比在BBS等人回答省事儿
《Programming Perl》——第三版,必看的书。。理由与学C要看TCPL,学Java要看TJPL一样。
《Advaced Perl Programming》——第一版。高手入门经。
《Effective Perl》——轻松一下。
《Perl Best Practices》——打算用perl进行大的Project时最好看看。

很巧上面几本的网上都有E版的了。学习一下搜E书的能力吧。。

在此之后,你要看的是perldoc或者CPAN了。

[ 本帖最后由 uppet 于 2007-9-13 23:52 编辑 ]

招聘 : Java研发
论坛徽章:
0
13 [报告]
发表于 2007-09-14 10:04 |只看该作者
from list,

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my $foo = Foo->new(1,2);

  5. print join(", ", $foo->foo, $foo->bar, $foo->baz), "\n";

  6. $foo->baz(3);

  7. print join(", ", $foo->foo, $foo->bar, $foo->baz), "\n";

  8. package Foo;

  9. BEGIN {
  10.        our $AUTOLOAD;
  11.        our @fields = qw<foo bar baz>;
  12. }

  13. sub new {
  14.        our @fields;
  15.        my $class = shift;
  16.        my %self;
  17.        @{self}{@fields} = (@_, (0) x @fields);
  18.        return bless \%self, $class;
  19. }

  20. sub AUTOLOAD {
  21.        our ($AUTOLOAD, @fields);
  22.        my $self = shift;
  23.        my $sub = (split '::', $AUTOLOAD)[-1];
  24.        return if $sub eq 'DESTROY';
  25.        die "$sub not defined" unless grep { $sub eq $_ } @fields;

  26.        #if there were args, then this is a setter
  27.        $self->{$sub} = shift if @_;

  28.        return $self->{$sub};
  29. }
复制代码

论坛徽章:
0
14 [报告]
发表于 2007-09-19 00:15 |只看该作者
原帖由 uppet 于 2007-9-13 23:48 发表
Mark Jason Dominus(《Higher-Order Perl》一书的作者,perl小牛人一个)。
在他的书中讲到很多有用的函数式编程技术,基本有一些要用到元编程。

阁下可以到CPAN下个Memoize模块来研究。
以阁下的水平,其实 ...

《Programming Perl》中文版翻译的不好,我觉得《Advaced Perl Programming》比较好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP