加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 命名Class.new

发布时间:2020-12-17 02:45:04 所属栏目:百科 来源:网络整理
导读:为什么为Class.new分配名称/常量会以这种方式运行? c = Class.new #= Class:0xnnnnnnnputs c #= Class:0xnnnnnnnb = cputs b #= Class:0xnnnnnnnNewClass = c #= NewClass shouldn't it be same as above #= Class:0xnnnnnnnputs c #= NewClass and now c h
为什么为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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读