You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中调用类方法是否等同于创建实例?以Time类为例

Ruby中“创建实例”与类方法调用的区别

先明确两个核心概念:

  • 创建实例:生成某个类的具体对象,这个对象拥有该类定义的属性和实例方法。
  • 类方法:直接绑定在类本身的方法,调用时不需要先创建实例(但有些类方法的作用就是创建实例)。

关于你的两段代码

示例1:明确创建实例

now = Time.now
# this makes instance

Time.now是Time类的类方法,它的功能就是创建并返回一个Time类的实例,然后把这个实例赋值给了now变量,所以这里确实创建了实例。

示例2:既创建了实例,也调用了类方法+实例方法

if Time.now.strftime('%Y/%m/%d') > '2022/12/19'
  # blabla
end

这段代码的执行过程可以拆解成两步:

  1. 调用Time.now:和示例1一样,这个类方法会创建一个Time实例,只不过这个实例没有被赋值给任何变量,是个临时对象。
  2. 调用.strftime('%Y/%m/%d'):这是调用刚才生成的那个临时Time实例的实例方法,用来格式化时间字符串。

所以结论是:示例2里不仅调用了类方法,也创建了Time实例——Time.now的本质就是创建实例,不管你有没有把实例存起来,只要调用它就会生成实例。之后的strftime是基于这个实例的操作,用完这个临时实例后,Ruby的垃圾回收机制会自动清理它。

内容的提问来源于stack exchange,提问作者nicecoding521235

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:10:22