Ruby 板


LINE

※ 引述《softwind (softwind rising)》之铭言: : 首先感谢神肥大大的回应 and 我又打错字了 : 是 mix-in阿... ...(明明精神很好...) 不敢,不过说到标题,下次可以省略掉一些跟问题无关的字, 例如「抱歉 请教一下」之类的 :p 客套话可以在内文里面说。 and 你这篇我觉得有点自言自语|||b 以讨论区而言,不是个很好的现象 所以有些你看来已经知道的事,我就不多提罗 : ※ 引述《godfat (godfat 真常)》之铭言: : : no, 硬要说反而比较像继承,Java interface 没有实作的观念 : 这个方法似乎是解决 Java不可以 多重继承 我从来不认为 Java 的 interface 解决了多重继承的问题, 因为实作上不能够继承的话,老实讲意义根本不大。 算是解决了一半的问题吧…我想。 而这也是 static typing 的问题,在 dynamic typing 如 Ruby 中, 根本就不需要 interface. Java interface 是为 static typing 做的。 跳脱 static typing 则此 interface 毫无意义。 : (Head first Java中说 "java的interface就像是100%的纯抽象class" ) true : 以书上(Ruby programming) 的说法 module的用途 题外话,"Ruby Programming" 是「中文」书名,实在让人觉得很囧 第一次看到有人把日文翻译成中文是翻成英文的…… 不免让我觉得他是有阴谋,想让大众搞不清楚 Ruby Programming 和 Programming Ruby 这本圣经书有啥关系。 : 1. 提供命名空间 : 2. 以mix-in的方式提供功能 : 第1个 应该就是 c++ or java中 namespace or package的观念(吧???) true : 而第2个 感觉很像是 interface... half true, 包含实作,你後面提到了 : 例如说 @Guide, class Array 有mix-in : module Enumerable 所以 可以将Enumerable 视为 Array这个class的 : 一种操作规格 : 而这些 module的方法 必须被 Array实作出来 : 如此Array.new 才能用(吧??? 是吗???) false, mixin 包含实作 : 这样来看的话 module 是可以拥有实作的 不只是规格的宣告而已... 要说规格的宣告,比较像是 unit test 在做的事 :) : c1. M_var == c2.M_var ->??? : c1.M_var.eql? c2.M_var ->?? eql? 是 == 的 synonym, 所以这两者的答案一定会是一致的 感觉你被 Java 荼毒有点深,如果你要判断的是两者是不是同一个 instance, 要用 object_id, 像是 c1.M_var.object_id == c2.M_var.object_id : (如果 是"个别"实体化的话 应该是 true, false) 是个别的 instance variable : class Hello : attr_accessor :name : end : obj=Hello.new("John") : class << Hello #到底是'<'(继承) 还是'<<'(类别方法) : def output : puts "Hello "+@name : end : end 因为你的 Hello 本身就是 class, 所以你这样写意义不大, 会等同於打开 Hello 追加内容。 class << something 的意义在於产生一个 singleton instance, 相对於 singleton class. 意思就是那个 instance 会是独一无二的。 至於办到这件事的方法,则是在继承体系中插入一个 virtual class, 假设现在有 class A, 他的继承体系是: Object -> A a = A.new aa = A.new class << a; end 那麽 a 的继承体系会变成: Object -> A -> virtual class a 而 aa 的继承体系保持: Object -> A : and 最後 感谢神肥大 回应我这很 低阶...(能? @@")的问题 本板冻结好久啦,感谢你的发问 : module N : end : module M < N : ^^^ : end : 不行这样用... 太恶搞了吗? module N; end module M include N end 同样的意思 其实我有点搞不清楚 Ruby 分 class 与 module 到底有何意义了… 既然这麽像,何不合并算了?有人有看法吗? edited: 我在想,这麽做也许没有太多语言上的意义。 比较像是为了实现简单的单一继承体系, 却又要解决多重继承的问题之结果。 也就是说,强迫你把物体用一个很简单的分类法分类。 像是 obj.class 一定只会回传一个最底层的 concrete class... -- 生死去来、棚头傀儡、一线断时、落落磊磊 《花镜》-世阿弥 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.58.12 ※ 编辑: godfat 来自: 220.132.58.12 (05/29 03:41)
1F:推 softwind:嗯 了解 谢谢 05/29 08:02







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

请输入看板名称,例如:e-shopping站内搜寻

TOP