美文网首页
Ruby中类方法的定义

Ruby中类方法的定义

作者: Shawn_Wang | 来源:发表于2015-12-06 20:40 被阅读1416次

Ruby中类方法的定义

方法的接受者就是类本身(类对象)的方法成为类方法。类方法的几种形式如下:

#1.在class <<类名 ~end 这个特殊的类定义中,以定义实例方法的形式来定义类方法
class << HelloMethod
    def SayHello(name)
        puts "#{name} say hello"
    end
end
HelloMethod.SayHello("Bob")

#2.在class上下文中使用self时,引用的对象是该类本身,因此可以使用class << self ~ end来定义

class ClassMethod
  class << self
    def Hello(name)
      puts "#{name} say hello!"
    end
  end
end
ClassMethod.Hello("Bob")

#3.使用def 类名.方法名 ~end 这样的形式来定义类方法
class ClassMethod
    def ClassMethod.SayHello(name)
        puts "#{name} say hello"
    end
end
ClassMethod.SayHello("Ruby")
#4.同样类似第二种方法一样使用self
class ClassMethod
  def self.SayHello(name)
    puts "#{name} say hello"
  end
end
ClassMethod.SayHello("Bob")

如果以为就是上面三种方法的话,那就大错特错了。上网查资料的时候发现还有下面这种方法: =。=

class ClassMethod
    ClassMethod.instance_eval do
        def SayHello(name)
            puts "#{name} say hello"
        end
    end
end

使用extend关键字扩展类方法。

module ClassMethod
  def cmethod
      "Class Method"
  end
end
class MyClass
  extend ClassMethod
end
p ClassMethod.cmethod #=>"Class Method"

类方法定义:方法的接收者是类本身的方法成为类方法。在Ruby中,所有类本身都是Class类的对象,所以可以把类方法理解为:

  • Class类的实例方法
  • 类对象的单例方法

相关文章

  • From Objective-C to Ruby(4)-类和模块

    类 定义类 OC: ruby: 初始化方法 OC: ruby: 实例变量和属性 OC: ruby: 类方法和对象方...

  • Ruby元编程笔记 - 类中的魔法

    Ruby元编程笔记 - 类定义 类定义揭秘 在类定义中,self就是正在定义的类。 所有使用def定义的方法都成了...

  • Ruby中类方法的定义

    Ruby中类方法的定义 方法的接受者就是类本身(类对象)的方法成为类方法。类方法的几种形式如下: 如果以为就是上面...

  • Ruby类(二)

    类 Ruby是一种面向对象语言 定义类 类中的变量 Ruby 提供了四种类型的变量: 局部变量:局部变量是在方法中...

  • Ruby元编程笔记——1.对象模型

    打开类 在Ruby中,定义类的语句和其他语句没有本质区别,你可以在类定义中放置任何语句。 Ruby的class关键...

  • ruby基础

    一、Ruby 类中的变量(Ruby 提供了四种类型的变量) 局部变量:局部变量是在方法中定义的变量。局部变量在方...

  • Ruby元编程笔记——4.类定义

    类定义揭秘 当前类小结 在类定义中,当前对象self就是正在定义的类。 Ruby解释器总是追踪当前类(模块)的引用...

  • Ruby中require, require_relative,l

    引言 在Ruby中,当我们想引用某些库或者其它文件中定义的类和方法时候,会使用 require 或者require...

  • Ruby 扩展类 + 继承

    扩展类 Ruby 允许我们在已经定义好的类中添加方法. 我们来试试给 String 类添加一个计算字符串单词数的实...

  • Ruby 类定义

网友评论

      本文标题:Ruby中类方法的定义

      本文链接:https://www.haomeiwen.com/subject/fvqehttx.html