gpt4 book ai didi

ruby-on-rails - `def self.myMethod` 和 `def myMethod` 之间有什么区别吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:01:39 25 4
gpt4 key购买 nike

我正在同时学习 ruby​​ 和 ROR,并且在别人的代码中注意到一件事。有时我会看到以这两种明显略有不同的方式定义方法:

class SomeClass < SomeInheritance::Base

def self.myMethod
end

def myOtherMethod
end

end

这有什么区别吗?我的意思是,在方法定义中使用 self 会影响方法的工作方式吗?欢迎任何启发。

最佳答案

def self.method_name将定义一个类方法而不是实例方法 -

class << self; def foo; end; end

关于该主题的一篇好文章是 this post来自耶胡达·卡茨

例如:

class Foo
def method_1
"called from instance"
end

def self.method_2
"called from class"
end

class << self
def method_3
"also called from class"
end
end
end

> Foo.method_1
NoMethodError: undefined method 'method_1' for Foo:Class

> Foo.method_2
=> "called from class"

> Foo.method_3
=> "also called from class"

> f = Foo.new
=> #<Foo:0x10dfe3a40>

> f.method_1
=> "called from instance"

> f.method_2
NoMethodError: undefined method 'method_2' for #<Foo:0x10dfe3a40>

> f.method_3
NoMethodError: undefined method 'method_3' for #<Foo:0x10dfe3a40>

关于ruby-on-rails - `def self.myMethod` 和 `def myMethod` 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com