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

请输入看板名称,例如:BuyTogether站内搜寻

TOP