首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Class.new.new创建了什么?

Class.new.new创建了什么?
EN

Stack Overflow用户
提问于 2013-08-27 12:57:24
回答 4查看 90关注 0票数 3
代码语言:javascript
运行
复制
Class.new.new
# => #<#<Class:0x44f3a2>:0xd7244e>

我很想知道什么是创造的。它是物体吗?如有任何技术解释,将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-27 13:15:26

使用Class.new,您将创建一个新类。实际上,不仅可以通过通用语法创建类:

代码语言:javascript
运行
复制
class Bird
    def is
        "word"
    end
end

但是您也可以像这样使用Class::new

代码语言:javascript
运行
复制
Bird = Class.new do
    def is
        "word"
    end
end

在上面的示例中,您可以运行Bird.new.is,它将像第一个示例一样返回"word"。创建匿名类或类非常有用,您可以随意重命名这些类。就你而言:

代码语言:javascript
运行
复制
Class.new.new

通过简单地调用Class.new,您将创建一个没有自定义方法或实例变量的新匿名类,然后通过第二个new方法进行实例化。

票数 6
EN

Stack Overflow用户

发布于 2013-08-27 13:01:09

您可以在控制台中跟踪它:

代码语言:javascript
运行
复制
irb(main):011:0> c = Class.new
=> #<Class:0x000000028245e0>

c是一个新的类。

代码语言:javascript
运行
复制
irb(main):012:0> c.new
=> #<#<Class:0x000000028245e0>:0x0000000282a170>

调用c.new将返回您刚才创建的新类的一个新实例。

票数 3
EN

Stack Overflow用户

发布于 2013-08-27 12:59:32

Class.new创建并返回Class实例(即类)。如果您再次调用它,new将实例化先前创建的类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18466119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档