免费注册 查看新帖 |

Chinaunix

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

大家讨论下Perl OO的实现方式以及特点 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-01-21 09:02 |只看该作者
Perl不是万能的,但很多人在工作中少了Perl是万万不能的。

论坛徽章:
0
22 [报告]
发表于 2011-01-21 10:07 |只看该作者
我学习perl也感觉perl的OO相对牵强.

perl毕竟是比较早的脚本语言,那时候的OO还都是在概念上的.

我认为如果现在perl更改为真的OO,那语法和编写方式都会有很大的变化.

鱼与熊掌不能兼得.尺有所长,寸有所短.毕竟不能为了面向对象而面向对象,要考虑

到向下兼容及目前的用户群.

论坛徽章:
0
23 [报告]
发表于 2011-01-21 10:58 |只看该作者
我的目标是发展一门Shell OO语言,已在sourceforge上申请了项目,地址是:

http://sourceforge.net/projects/shelloops/

论坛徽章:
0
24 [报告]
发表于 2011-01-21 11:02 |只看该作者
我的目标是发展一门Shell OO语言,已在sourceforge上申请了项目,地址是:
兰花仙子 发表于 2011-01-21 10:58



    shell OO语法举例:

$ "/etc/passwd".cat.grep("pop").awk(":"){print $1}
pop

论坛徽章:
0
25 [报告]
发表于 2011-01-21 12:44 |只看该作者
我的目标是发展一门Shell OO语言,已在sourceforge上申请了项目,地址是:
兰花仙子 发表于 2011-01-21 10:58



    Error 404

论坛徽章:
0
26 [报告]
发表于 2011-01-21 13:52 |只看该作者
我是希望多了解大家在目前的perl下如何实现perlOO的。

比如对于perlOO封装问题,有一些策略,可能没有优劣,但至少也是perl的一种精神:
1、是否允许$obj->{attr}来直接读写属性值
2、是否有必要给属性实现get、set方法,或者通过AUTOLOAD自动变相给所有属性添加了set/get方法
3、规定使用_开头的属性和方法为私有的
4、通过闭包实现封装,甚至自己实现一个private关键字

论坛徽章:
0
27 [报告]
发表于 2011-01-21 13:56 |只看该作者
可能有人说,封装那么重要吗?是的,很重要。为什么php、java有很多框架,而perl寥寥无几。
因为完备的OO特征很重要。比如框架底层类需要保存的一些数据,能够被你上面的代码乱改,那框架会崩溃的。

我在实现一些基础类库的时候,也是这样的感觉。有些属性如果被调用者改了,就是崩溃。

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
28 [报告]
发表于 2011-01-21 17:51 |只看该作者
这个世界就是这么不完美的
Perl就是不干OO的
就算Perl可以OO,还得有大公司给你开发个NB的Frame

世界上有几个大公司这么干过? MS,borland,Java。。。屈指可数。。。

论坛徽章:
0
29 [报告]
发表于 2011-01-21 23:01 |只看该作者
本帖最后由 greencow 于 2011-01-22 04:34 编辑
我是用bless hash实现的,但是,封装是个大问题,我相信很多人都遇到过。
因为有些属性如果被外面修改了会 ...
yiten 发表于 2011-01-14 16:16


You can bless any reference. Nobody can touch the attributes without 'get'/'set' methods in following code.

package MyOO;
my $h = {};
sub oo {
        my $class = shift;
        $h = {@_};
        my $obj='donot touch my values';
        bless \$obj, $class;
        return \$obj;
}

论坛徽章:
29
技术图书徽章
日期:2013-09-02 19:59:502015元宵节徽章
日期:2015-03-06 15:51:332015小元宵徽章
日期:2015-03-06 15:57:20操作系统版块每日发帖之星
日期:2015-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17操作系统版块每日发帖之星
日期:2015-09-21 06:20:002015亚冠之水原三星
日期:2015-10-30 00:06:07数据库技术版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2016-01-07 10:32:07操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-07-23 06:20:00
30 [报告]
发表于 2011-01-22 11:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP