Project1
标题:
嵌套定义和分开来有区别吗
[打印本页]
作者:
有丘直方
时间:
2016-5-8 10:21
标题:
嵌套定义和分开来有区别吗
本帖最后由 有丘直方 于 2016-5-8 10:52 编辑
尤其是用到元编程之类的,简直就(似乎)没有区别了。(代码没有测试过)
比较1:
class A
end
class << A
def show
msgbox(1)
end
end
A.show
复制代码
class A
class << self
def show
msgbox(1)
end
end
end
A.show
复制代码
比较2:
class A
class B
def show
msgbox(1)
end
end
end
b = A::B.new
b.show
复制代码
class A
end
class B
def show
msgbox(1)
end
end
b = B.new
b.show
复制代码
作者:
喵呜喵5
时间:
2016-5-8 13:02
本帖最后由 喵呜喵5 于 2016-5-8 13:05 编辑
比较1本来就没区别,在 class A 中 self 就是 A
比较2有区别
class A
class B
end
end
p B # => uninitialized constant B (NameError)
复制代码
这里全局作用域只定义一个常量A,常量A仅作为一个命名空间使用
class A
end
class B
end
p B # => class B
复制代码
这里全局作用域定义了常量A和常量B
另外,即使作为命名空间,一般也不会用到 class 而是直接使用父类的 module 了
还有,我听不懂你第一句话所说的用到元编程是什么意思
作者:
余烬之中
时间:
2016-5-8 16:53
本帖最后由 余烬之中 于 2016-5-8 19:48 编辑
不是很懂你们强行元编程
自己没理解的词就不要乱用
把 class, module 之类看作是 scope operator 而不是 declaration keyword
理解了我这里的几个名词之后再评论
作者:
无脑之人
时间:
2016-5-8 16:54
唔……多学习,少装逼,嗯/w\
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1