Ruby 板


LINE

首先感謝神肥大大的回應 and 我又打錯字了 是 mix-in阿... ...(明明精神很好...) ※ 引述《godfat (godfat 真常)》之銘言: : ※ 引述《softwind (softwind rising)》之銘言: : : 像是混入 Enumerable 和Comparable : : 這邊 個人認為很像是 interface觀念 : no, 硬要說反而比較像繼承,Java interface 沒有實作的觀念 sorry 這邊小弟有點不太清楚 在 Java中 interface 本身也是不可以被具象化 interface基本上就是提供一個物件的 動作/行為的規格 interface本身是一個空殼 必須被繼承者實作了之後 該類別才能具象化 這個方法似乎是解決 Java不可以 多重繼承 卻又該類別希望帶有多種相似動作的方法(感覺ruby也是如此) (Head first Java中說 "java的interface就像是100%的純抽象class" ) : : 不知道板上大大 有沒有過類似的用法 (實際應用時) : 什麼意思?什麼時候不算實際應用? sorry 這邊我也沒有說清楚 以書上(Ruby programming) 的說法 module的用途 1. 提供命名空間 2. 以mix-in的方式提供功能 第1個 應該就是 c++ or java中 namespace or package的觀念(吧???) 而第2個 感覺很像是 interface... 例如說 @Guide, class Array 有mix-in module Enumerable 所以 可以將Enumerable 視為 Array這個class的 一種操作規格 而這些 module的方法 必須被 Array實作出來 如此Array.new 才能用(吧??? 是嗎???) 又例如 module Observable 他本身 就提供 add_observer 的功能 include Observable的class ... 嗯... 不用實作 因為他已經做好了... (該死 我又搬石頭砸自己的腳了...) 這樣來看的話 module 是可以擁有實作的 不只是規格的宣告而已... 但是 又可以偷偷繞過 類似Java的不可以多重繼承的問題 (哈) : : 再請教一下 guide上面說module是不可以直接實體化的 : : 不過 module Math 含有常數 PI, E : : 這種常數宣告是類似 class中 class variable的寫法嗎? : : (如果是Java 可以用final... 不過 Ruby...?) : capitalized words are constants : 開頭字母大寫的字是常數,不過他的意思是不能再指向另一個實體, : 而非 C++ 中 const 的概念:「物件不能再被更改」。 恩 這個我也有查到 謝謝 : 在 Ruby 中,物件不能再被更改是由內部的 frozen state 記錄。 : (上一篇提到的 frozen state 就用在這裡) : obj.freeze # now obj is forzen, can't modify any state for now on : 至於 Java 的 final 我不太確定… XD : 我想 Java 是沒有 C++ const 的概念, : 應該比較類似 Ruby 的 capitalized words 吧? : module Math : PI = 3.1415926 : end : 像是這樣寫。 : : module不能直接實體化 那module是不是不可以包含 : : instance variable??? : module 的 instance variable 會變成 mixee 的 instance variable : module M : attr_accessor :test : end : class C : include M : end : 相近於:(說是相近因為 mixin 其實是 ref 關係而非 meta-programming) : class C : def test; @test; end : def test=(new_test); @test = new_test; end : end 這邊 想討論一下 例如說 module M attr_accessor :M_var end class C include M end c1 = C.new(...) c2 = C.new(...) c1. M_var == c2.M_var ->??? c1.M_var.eql? c2.M_var ->?? 像上面這個例子 應該是? (我等等敲敲code好了) (如果 是"個別"實體化的話 應該是 true, false) : : 因為 class < aObject 的用法 : : 讓小弟覺得很不可思議 (Ruby!=Java ...) : 這是什麼意思…?應該不是指 less than operator 吧? : 是說 singleton instance 嗎? 一切都是我的錯... class Hello attr_accessor :name end obj=Hello.new("John") class << Hello #到底是'<'(繼承) 還是'<<'(類別方法) def output puts "Hello "+@name end end Hello.output #--> "Hello John" and 最後 感謝神肥大 回應我這很 低階...(能? @@")的問題 THX ------------------------ module N end module M < N ^^^ end 不行這樣用... 太惡搞了嗎? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.39.236







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燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP