亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4198 | 回復(fù): 17
打印 上一主題 下一主題

關(guān)于perl OOP編程。請不吝賜教 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-09-11 11:07 |只看該作者 |倒序瀏覽
高手請出手。

本人,剛剛接觸PERL。但是感覺語言都是相通的,沒有感覺到什么壓力。但是最近在學(xué)習(xí)PERL 的時候發(fā)現(xiàn)OOP ,對于我很難理解。我認(rèn)為語言都是用寫,人用的,所以也不會超出人的理解能力。但是OOP 我實在難理解。

請高手,大概說一下,形象些,最好。

其次是大概的結(jié)構(gòu)。

package Bug; # 第一步,建立一個 package
use strict;
sub new  # 建立 subroutine
{
    my ($class) = @_;                     ·····························????
    my $objref = {};                       ·····························????
    #其他的一些代碼
    bless $objref, $class; #用 bless 語法產(chǎn)生了一個 object    ·················????
}

sub print_me # 又建立了一個subroutine
{
    my ($self) = @_;
    #實現(xiàn)功能的一些代碼
}





#! /usr/bin/perl -w
use Bug;
use strict;

my $object = Bug->new(@args);  #利用 @args 中的數(shù)據(jù)創(chuàng)立一個對象,它屬于 Bug 這個 class
$object->print_me();  #調(diào)用Bug class 中定義的print_me()函數(shù)


查了些東西還是不明白。 先謝謝高手了。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
2 [報告]
發(fā)表于 2008-09-11 11:18 |只看該作者
【但是感覺語言都是相通的,沒有感覺到什么壓力】
你輕敵了。重新去看入門部分吧。
你打的三個問號有兩個屬于基礎(chǔ)中的基礎(chǔ)。

論壇徽章:
0
3 [報告]
發(fā)表于 2008-09-11 11:25 |只看該作者
sub new
{
    my $first = shift;
    my $class = ref ($first) || $first;
    my $objref = { @_ };                          
   bless $objref, $class;
    return $objref;
}


這個就是其它oo語言中的constructor
你如果有 oo 的概念的話,其實這個很好懂, 因為perl把每個步驟都告訴你了,通過代碼可以看出,
$first  是用來接收傳入給constructor 的第一個參數(shù),這個參數(shù)不是你的new后面括號里的內(nèi)容,而是 一個object 或者Bug (package name)。 所以,你所需要做的就是用一個reference 去綁定 它(bless的作用),然后你就可以通過這個reference 去掉用它的方法。至于my $objref = { @_ };     這個是為了接受你的初始化參數(shù)所用

論壇徽章:
0
4 [報告]
發(fā)表于 2008-09-11 11:27 |只看該作者
我今天怎么這么有 耐心阿。。。。

論壇徽章:
0
5 [報告]
發(fā)表于 2008-09-11 11:59 |只看該作者
我是這么理解的, Perl偷偷的把類似C++的this pointer作為第一個參數(shù)傳進(jìn)來了

論壇徽章:
0
6 [報告]
發(fā)表于 2008-09-11 13:05 |只看該作者
原帖由 forlorngenius 于 2008-9-11 11:27 發(fā)表
我今天怎么這么有 耐心阿。。。。



是不是今天買彩票會中獎??哈哈

論壇徽章:
0
7 [報告]
發(fā)表于 2008-09-11 13:12 |只看該作者
perl的對象, 我認(rèn)為其本質(zhì)就是一個ref而已, 只不過這個ref 被bless過了, 所以通過這個ref可以調(diào)用被bless到的模塊的方法。

以ref to hash舉例,
perl創(chuàng)建對象的步驟是這樣的,
1.  先my $rh =  {};
2.  定義模塊
package Module;
sub some_method {print "some method\n";}

3. 把$rh跟Moudle關(guān)聯(lián)起來,也就是用bless.
bless $rh, 'Module';

現(xiàn)在$rh就是一個object了,但是你仍然可以把它當(dāng)作hashref來使用, 同時你可以通過它調(diào)用Module的方法:
$rh->{some_key} = "some value";
$rh->some_method();

論壇徽章:
0
8 [報告]
發(fā)表于 2008-09-11 13:46 |只看該作者

回復(fù) #7 xiaoshengcaicai 的帖子

嚴(yán)格來說 $rh 非 object, 而是object 的reference

論壇徽章:
0
9 [報告]
發(fā)表于 2008-09-11 13:46 |只看該作者

回復(fù) #6 xiaoyu9805119 的帖子

沒有中,哎

論壇徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辭舊歲徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
10 [報告]
發(fā)表于 2008-09-11 13:54 |只看該作者
原帖由 forlorngenius 于 2008-9-11 13:46 發(fā)表
沒有中,哎

堅持買,也許能中
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP