ruby中的类/静态方法有什么用?
发布时间:2020-12-16 21:33:54 所属栏目:百科 来源:网络整理
导读:学习 ruby和oop一般来说,我遇到了类方法,据我所知,它们就像实例方法,但是可以从类而不是从对象访问,并且只能同时运行一个. 但是,我不明白为什么你会使用普通方法(类外)的类方法,甚至它们的用途是什么? 例如: #Why would you use:class Foo def self.bar pu
学习
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实例的标题. 因此,管理实例集合的类方法和实例方法仅管理该实例. 通常,如果方法将对一组实例进行操作,或者是与该类相关但不直接读取或更新单个实例的代码,则它可能应该是类方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |