gpt4 book ai didi

ruby - ruby 中的类/静态方法有什么用?

转载 作者:数据小太阳 更新时间:2023-10-29 06:56:04 24 4
gpt4 key购买 nike

一般学习 ruby​​ 和 oop,我发现了类方法,据我所知,这些方法类似于实例方法,但从类而不是从对象访问,并且只能同时运行一个。

但是,我不明白为什么您会使用类方法而不是普通方法(类外),甚至它们的用途是什么?

例如:

#Why would you use:
class Foo
def self.bar
puts "Class method"
end
end

#Versus simply:
def bar
puts "Normal method"
end

Foo.bar # => Class method
bar # => Normal method

因为它们都产生相同的结果?我对它们很困惑,所以如果我误解了这里的任何/所有内容,请更正。

最佳答案

你的例子不好。

类方法可能处理管理一个类存在的所有实例,而实例方法一次处理一个实例。

class Book
def self.all_by_author(author)
# made up database call
database.find_all(:books, where: { author: author }).map do |book_data|
new book_data # Same as: Book.new(book_data)
end
end

def title
@title
end
end


books = Book.all_by_author('Jules Vern')
books[0].title #=> 'Journey to the Center of the Earth'

在这个例子中,我们有一个名为 Book 的类。它有一个类方法 all_by_author。它查询一些模拟数据库并返回一组 Book 实例。实例方法 title 获取单个 Book 实例的标题。

所以类方法管理实例集合,而实例方法只管理那个实例。


一般来说,如果一个方法将对一组实例进行操作,或者是与该类相关的代码但不直接读取或更新单个实例,那么它可能应该是一个类方法。

关于ruby - ruby 中的类/静态方法有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18471838/

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