免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4250 | 回复: 13
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-13 13:22 |只看该作者 |倒序浏览
我们看问题:
  • 要求使用元编程技术动态的生成一个Person类
  • Person类的字段的名称以空格为分隔符存放在attribute.txt中,当然我们并不能预先知道这些字段,比如:
    id name age sex
  • 为Person类的每一个字段提供一个setter和getter成员方法
  • 最后使用Person类生成一个Person实例


另外,我想知道在PERL中,元编程技术应用的广泛吗?我不太懂perl的,谢谢大家的回答了。

[ 本帖最后由 flw 于 2007-9-13 14:09 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-09-13 13:57 |只看该作者
一个简单的。。。



package Person;
use Data::Dumper;

sub _from_file{
    my $FF;
&nbsp;&nbsp;&nbsp;&nbsp;open $FF ,"<att.txt";
&nbsp;&nbsp;&nbsp;&nbsp;return split /\s/, scalar <$FF>;
}

sub new{
&nbsp;&nbsp;&nbsp;&nbsp;my %arg_hash = @_;
&nbsp;&nbsp;&nbsp;&nbsp;print Dumper(%arg_hash);
&nbsp;&nbsp;&nbsp;&nbsp;@fields = _from_file();
&nbsp;&nbsp;&nbsp;&nbsp;print Dumper(@fields);
&nbsp;&nbsp;&nbsp;&nbsp;for my $newf (@fields){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arg_hash{$newf} = undef unless exists $arg_hash{$newf};
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;print Dumper(%arg_hash);
&nbsp;&nbsp;&nbsp;&nbsp;return bless \%arg_hash;
}

sub dump{
&nbsp;&nbsp;&nbsp;&nbsp;$self = shift;
&nbsp;&nbsp;&nbsp;&nbsp;print Dumper($self);
}


package main;

$stranger = Person::new(so => 1, far => 2);
$stranger->dump();

论坛徽章:
0
3 [报告]
发表于 2007-09-13 14:00 |只看该作者
初学, 看的有点迷糊,膜拜下楼上的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2007-09-13 14:12 |只看该作者
警告一下楼主:
不要扯上无关话题。
这次先帮你编辑了。

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

论坛徽章:
0
5 [报告]
发表于 2007-09-13 14:22 |只看该作者

同上

论坛徽章:
0
6 [报告]
发表于 2007-09-13 14:49 |只看该作者
醉翁之意不在酒,改了就不来了,呵呵

论坛徽章:
0
7 [报告]
发表于 2007-09-13 18:07 |只看该作者
原帖由 uppet 于 2007-9-13 13:57 发表
一个简单的。。。



package Person;
use Data:umper;

sub _from_file{
    my $FF;
    open $FF ,"

先谢谢你的回答!你个这个例子演示了perl使用hash来动态的增加成员变量,那么如何动态的增加成员函数?假设我们为Person类增加一个getter用以获取age成员,如下所示:


  1. package main;

  2. $stranger = Person::new(so => 1, far => 2);
  3. $stranger->dump()
  4. $stranger->getAge()
复制代码

能演示下吗?另外,你能告诉我,PERL的元编程技术在实践中用的多吗?

论坛徽章:
0
8 [报告]
发表于 2007-09-13 18:11 |只看该作者
原帖由 flw 于 2007-9-13 14:12 发表
警告一下楼主:
不要扯上无关话题。
这次先帮你编辑了。

好吧,因为你讲的有道理,所以你的警告我接受!那么,其他更严重的违反版规的行为是不是也要警告一下了?引用就不必了,反正大家心里都有数,我也不想再和你发生争执了!

论坛徽章:
0
9 [报告]
发表于 2007-09-13 18:31 |只看该作者

回复 #7 DennisRitchie 的帖子

加入新方法可以使用AUTOLOAD方法。。
一般元编程的使用者是库作者或者framework作者。。。
一般用户用的不多。。

论坛徽章:
0
10 [报告]
发表于 2007-09-13 18:33 |只看该作者
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP