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

  免費(fèi)注冊 查看新帖 |

Chinaunix

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

STDOUT->method()的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-08-27 16:38 |只看該作者 |倒序?yàn)g覽
本帖最后由 sjdy521 于 2012-08-27 16:38 編輯

發(fā)現(xiàn)一個(gè)現(xiàn)象:
use IO::Handle之后,類似STDOUT、STDERR之類的句柄就可以繼承IO::Handle,用oo的形式使用,比如:
STDOUT->autoflush(1);
我看了一下IO::Handle以及其他一些相關(guān)聯(lián)的模塊的源代碼,并沒有發(fā)現(xiàn)什么代碼產(chǎn)生了這種效果。
我的疑問是,perlobj里有提到:
When you call a method, the thing on the left side of the arrow is passed as the first argument to the method. That means when we call Critter->new() , the new() method receives the string "Critter" as its first argument. When we call $fred->speak() , the $fred variable is passed as the first argument to speak() .

按照這樣的理解,那么STDOUT->autoflush(1)就相當(dāng)于是STDOUT::autoflush(STDOUT,1);
但顯然事實(shí)上不是這樣的。
想了解下,具體是哪里的代碼產(chǎn)生這種效果,還是說,perl內(nèi)部針對文件句柄做了特殊的處理?

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期: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
2 [報(bào)告]
發(fā)表于 2012-08-27 17:19 來自手機(jī) |只看該作者
特殊處理

論壇徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亞洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辭舊歲徽章
日期:2015-03-03 16:54:152015亞冠之吉達(dá)阿赫利
日期:2015-06-02 11:34:112015亞冠之武里南聯(lián)
日期:2015-06-24 12:13:082015亞冠之阿爾納斯?fàn)?日期:2015-08-03 09:08:25
3 [報(bào)告]
發(fā)表于 2012-08-27 17:24 |只看該作者
回復(fù) 1# sjdy521

File handle 在 Perl 內(nèi)很早之前就是用面向?qū)ο蟮姆绞綄?shí)現(xiàn)的,像
  1. print $fh something
復(fù)制代碼
的代碼底層一直都是面向?qū)ο蟮,所?div id="a9ur7n9vt" class="blockcode">
  1. $fh$
復(fù)制代碼之后才不能加逗號的。甚至新版的 Perl,不加載 IO 相關(guān)的模塊也可以在 File handle 上調(diào)用方法,參看 http://search.cpan.org/~jesse/pe ... _IO::File_on_demand
至于
  1. STDOUT->autoflush(1)
復(fù)制代碼
肯定是不能理解為
  1. STDOUT::autoflush(STDOUT,1);
復(fù)制代碼
的,它調(diào)用的是
  1. IO::Handle
復(fù)制代碼
或者
  1. IO::File
復(fù)制代碼
里的方法。你可以理解為
  1. STDOUT
復(fù)制代碼
是一個(gè)對象而不是一串簡單的字符串,僅僅是它前面不含 sigil 而已,但是它仍然是一個(gè)變量。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-08-27 17:31 |只看該作者
本帖最后由 sjdy521 于 2012-08-27 17:33 編輯

@zhlong8@Monox
這樣感覺有點(diǎn)蛋疼啊?赡芪夷w淺了
比如:
  1. perl -e 'package AA;sub func{print "hello world\n";}package main;open(AA);AA->func()'
復(fù)制代碼
如果一個(gè)包的名稱和一個(gè)句柄重復(fù)了,就沒辦法正常方式使用了
  1. Can't locate object method "func" via package "IO::Handle" at -e line 1.
復(fù)制代碼
甚至我
  1. "AA"->func()
復(fù)制代碼
  1. AA::->func()
復(fù)制代碼
都不可以

論壇徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亞洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辭舊歲徽章
日期:2015-03-03 16:54:152015亞冠之吉達(dá)阿赫利
日期:2015-06-02 11:34:112015亞冠之武里南聯(lián)
日期:2015-06-24 12:13:082015亞冠之阿爾納斯?fàn)?日期:2015-08-03 09:08:25
5 [報(bào)告]
發(fā)表于 2012-08-27 17:35 |只看該作者
回復(fù) 4# sjdy521


    現(xiàn)在都建議用 Perl 的三參數(shù) open 寫法,文件句柄用局部變量的形式。因?yàn)槭褂萌肿兞坑刑嗟牟缓玫牡胤健?/td>

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-08-27 17:42 |只看該作者
回復(fù) 5# Monox


    好,這些內(nèi)部原理辨識清楚了以后遇到也不怕了。 我現(xiàn)在也很少會用bareword做文件句柄

論壇徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亞洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辭舊歲徽章
日期:2015-03-03 16:54:152015亞冠之吉達(dá)阿赫利
日期:2015-06-02 11:34:112015亞冠之武里南聯(lián)
日期:2015-06-24 12:13:082015亞冠之阿爾納斯?fàn)?日期:2015-08-03 09:08:25
7 [報(bào)告]
發(fā)表于 2012-08-27 17:43 |只看該作者
回復(fù) 6# sjdy521


    不過,話說回來,這樣子是可以的
  1. perl -e 'package AA; sub func { print "hello world\n"; } package main; open(AA);package AA;AA->func()'
復(fù)制代碼

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-08-27 17:47 |只看該作者
這樣子*main::AA和*AA::AA都被隔開了。。不算 不算
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP