ELI5:为什么可以在类方法中调用类方法而不显式说明类本身? 红宝石/轨道

问题描述

抱歉,标题有点令人困惑,但我刚刚发现了一些令人难以置信的东西。当您在类方法中调用类方法时,您不必在它之前放置 self 以使其执行。我不明白为什么会这样。

例如,假设您有一个具有以下架构的模型 Food 类:

  create_table "foods",force: :cascade do |t|    
    t.string  "name",null: false
    t.string  "food_type",null: false
    t.datetime "expiration_date",null: false
    t.datetime "created_at",precision: 6,null: false
    t.datetime "updated_at",null: false
  end

class Food < ApplicationRecord
  def self.output_new
    new(name: 'marshmallow',food_type: 'snack')
  end
end

不是写 Food.newself.new,只需写 new 返回一个新创建的实例。使用 Eigenclass 语法编写方法也会产生相同的结果。这不仅限于 new,而且几乎适用于所有适用的类方法,例如 create,delete,instance_methods 等。

我已经搜索过为什么会这样,但我真的不明白。有人能解释一下为什么会发生这种情况以确保我没有出现幻觉吗?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)