PLT 板


LINE

看板 PLT  RSS
不是作者轉的有一點失望 XD : ※ [本文轉錄自 C_and_CPP 看板] : 作者: sai199 (Adapter) 看板: C_and_CPP : 標題: [問題] first-class object : 時間: Sat Jul 28 19:25:48 2007 : 『這對於像C++這種不將類別視為一級物件 (first-class object) 的程式語言來說,』 就像推文所說的,first-class object 指的就是你可以把他當成可以任意操作的 value wikipedia 上其實寫得很清楚了,這裡就大略用中文講一次,並給點實例 Depending on the language, this can imply: * being expressible as an anonymous literal value 可以當作一個匿名的字面數值,例如數字:1 2 3 你不需要特別給他一個名字,就可以使用數字 * being storable in variables 可以存到變數裡面。在 C++ 中,class 不是 first-class, 所以你不能: class T{}; T' t = T; 你找不到一個可以儲存 class 的 variable/type * being storable in data structures 這意思跟上面的差不多﹍ * having an intrinsic identity (independent of any given name) 這個看不太懂,我想是指可以給他任意名字,如果是這樣那跟存到變數裡的意思差不多 * being comparable for equality with other entities 可以拿來被比較,例如: class T{}; class U{}; cout << T == U; 當然這在 C++ 中不合法,你只能透過間接的手段: cout << typeinfo(T) == typeinfo(U); * being passable as a parameter to a procedure/function 可以當作參數去傳遞(可以存到變數裡就可以當作參數傳,說來說去意思都差不多﹍) * being returnable as the result of a procedure/function 可以被回傳 * being constructable at runtime 可以在執行期間被產生出來,這點也是非常明確,你不能在 C++ 執行期產生 class 所有的 class 都必須在 compile time 就決定好,日後也不得改變。 * being printable 可以被印出來,C++ 中可透過間接的方法 cout << typeinfo(T).name(); 然而這個 name 是實做決定(implementation defined), 所以在不同 compiler 下出來的結果並不會一樣。 例如 ms 的 vc 系列都是印很白話的:class T 而 g++ 則會產生不容易讓人看懂的:1T 之類的,用一個數字表示後面名字的長度, 緊接著就是那個真正的名稱。碰到 template 時幾乎是完全無法閱讀。 我猜這是為了要讓名稱統一之故。 * being readable 這不知道指什麼 * being transmissible among distributed processes 可以在不同的 processes 間傳遞,這也跟變數的意思差不多 * being storable outside running processes 這大概是指可以被 dump 出來的意思。 所以簡單地說就是 first-class 就是指可以自由使用的意思。 不是 first-class 的話,什麼可能都有,像是 C++ 的 class 限制就很多, template 則限制又更多了,因為他已經是 metaprogramming 的層次了。 不過一般會談到 first-class 的不是 class, 而是 function, 這在 functional programming 中非常重要,雖然一般是用 higher-order 這個詞, 把焦點放在另外一個層次上了 :p 在 C++ 中要做 first-class function, 可以靠 boost 的 lambda library, 用了一堆非常 tricky 的方式達到 first-class function, 有點彆扭, 不過還算可以用,有興趣的話可以去看看。 我覺得 C++ 可怕之處就在於雖然語言上欠缺不少東西,卻總是能看到有人用 很詭異的方式實做出來,儘管有點殘廢,但至少有點樣子了。 --   『風車』が廻り続ける度に 『美しき』幻想が静かに紡がれ    『焔』の揺らめきの外に 『腕』を伸ばす愚かな者達 -《Roman》5th Story  『宝石』をより多く掴もうと 『朝と夜』の狭間を彷徨い続ける Track 10   『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の賢者 『賢者』が忌避する檻の中から 『伝言』の真意を彼等に問うだろう   『天使』が别れを告げし時 『地平線』は第五の物語を識る --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
1F:→ sunneo:嗯---- boost就是一個詭異的例子吧(笑 07/28 21:34
2F:推 sai199:感謝兩位,我還不會轉文-.-",謝謝godfat^^ 07/28 21:44
3F:→ sai199:太深奧了,還是頭次發現PLT版○rz 07/28 21:47
4F:推 timTan:好文! 07/30 01:21







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP