微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

学习 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实例数组.实例方法标题获取单个Book实例的标题.

因此,管理实例集合的类方法和实例方法仅管理该实例.

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

原文地址:https://www.jb51.cc/ruby/267272.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐