ruby – 命名Class.new

为什么为Class.new分配名称/常量会以这种方式运行?

c = Class.new #=> <Class:0xnnnnnnn>
puts c  #=> <Class:0xnnnnnnn>

b = c
puts b #=> <Class:0xnnnnnnn>

NewClass = c   #=> NewClass  <shouldn't it be same as above #=> <Class:0xnnnnnnn>
puts c  #=> NewClass  <and Now c has a name although it was not the left operand above>

解决方法

后者等同于使用kernel :: const_set

语义类NewClass相当于

c = Class.new
Kernel::const_set :NewClass,c

并赋值给一个常量,即NewClass = c在语义上等价于

Kernel::const_set :NewClass,c

所以当你写作

c = Class.new
NewClass = c

它在语义上和写作一样

class NewClass

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...