ruby-on-rails - Ruby中类定义中的方法类是什么意思?

标签 ruby-on-rails ruby

我熟悉类定义中的函数定义和变量声明:

public class MyClass {
  public int myvar;
  public void doSomething() {

  }
}

但是当在类定义中实际调用方法时,在 Ruby 中“意味着”什么?这种情况在 Rails 中经常发生,例如:

class User < ActiveRecord::Base
  has_many :posts
end

这到底是做什么的(在比“它向类添加一些方法”更低的层次上)?我将如何实现这样的功能(例如,混合一些其他方法的功能)?

最佳答案

在类的定义过程中,接收者是类对象,所以它实际上与更熟悉的 是一回事。 method 调用类方法的技术。

>> class A
>>   def self.hello
>>     puts 'world'
>>   end
>>   hello
>> end
world
=> nil
>> A.hello
world
=> nil
>> class B < A
>>   hello
>> end
world
=> nil

因此,为了进一步类比 ClassName.new,您可以通过这种方式调用任何类方法。让我们以 new 为例:

>> class C
>>   def happy
>>     puts 'new year'
>>   end
>>   new
>> end.happy
new year
=> nil

顺便说一句,不要对这个方法是在父类(super class)中定义的事实感到困惑。 问:派生类和父类(super class)实例有什么区别?说 ActiveRecord::Base答: 没什么!只有一个类实例。

关于ruby-on-rails - Ruby中类定义中的方法类是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612045/

相关文章:

ruby-on-rails - Font Awesome Rails 在部署后将无法工作。它看起来像是糟糕的 Unicode 字符。为什么?

ruby-on-rails - 在 ruby​​ on Rails 中访问另一种方法的变量

ruby-on-rails - 参数错误 : SMTP To address may not be blank: []

ruby - 用 Ruby 中的组名替换分组的正则表达式

ruby-on-rails - Rails 4 sqlite3 Gem::LoadError

javascript - 如何使用 Angular 和 Rails API 实现通知 - 除了使用轮询技术

ruby-on-rails - 尝试让经过身份验证的用户首先登陆他们的个人资料页面而不是 home#index - 使用 Devise

ruby-on-rails - Rails 3.1.1,关于使用 remote true 两个 ajax 请求到服务器

ruby - Ruby 中的 Gsub 函数问题

ruby-on-rails - ActiveRecord::Relation.concat 在 Rails 5 中失败