作者godfat (godfat 真常)
看板Ruby
标题Re: [问题] 抱歉 请教一下 module 和min-in的观念
时间Mon May 28 20:26:06 2007
※ 引述《softwind (softwind rising)》之铭言:
: 像是混入 Enumerable 和Comparable
: 这边 个人认为很像是 interface观念
no, 硬要说反而比较像继承,Java interface 没有实作的观念
: 不知道板上大大 有没有过类似的用法 (实际应用时)
什麽意思?什麽时候不算实际应用?
: 再请教一下 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
: 因为 class < aObject 的用法
: 让小弟觉得很不可思议 (Ruby!=Java ...)
这是什麽意思…?应该不是指 less than operator 吧?
是说 singleton instance 吗?
--
In Lisp, you don't just write your program down toward the language,
you also build the language up toward your program.
《Programming Bottom-Up》- Paul Graham 1993
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.58.12