`
bollaxu
  • 浏览: 219930 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby类方法的定义

    博客分类:
  • Ruby
 
阅读更多

Ruby定义类方法(即static method)有几种,简单的例子

class Foo
    def Foo.dummy1
        puts "dummy1"
        @name = "dummy1"
        @@var = "dummy1"
        puts @name
    end 

    def Foo::dummy2
        puts "dummy2"
        @name = "dummy2"
        @@var = "dummy2"
        puts @name
    end 

    def self.dummy3
        puts "dummy3"
        @name = "dummy3"
        @@var = "dummy3"
        puts @name
    end 

    def putsName
        puts @name
        puts @@var
    end 
end

Foo.dummy1
Foo.dummy2
Foo.dummy3
a = Foo.new
#a.dummy1 #NoMethodError
#a.dummy2 #NoMethodError
#a.dummy3 #NoMethodError
a.putsName

 值得注意的是,类方法不能在实例里面调用,这个跟C++和Java等有所不同。输出结果是:

dummy1
dummy1
dummy2
dummy2
dummy3
dummy3

dummy3
 这里,同样的,实例属性@name的值虽然在类方法里面引用了,但是不会影响到实例a。而类变量@@var的值则被改变了。

 

 

分享到:
评论

相关推荐

    Ruby 方法、类

    在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...

    Ruby-Referral一个命令行工具用于查找过滤和排序Ruby代码的定义和引用

    方法是类或模块中定义的行为,Referral能找出方法的调用位置和实现,这对于理解代码流程和优化性能至关重要。变量在Ruby中分为局部变量、实例变量、类变量和全局变量,Referral能够追踪它们的使用情况,有助于识别...

    06Ruby 方法.docx

    #### 定义方法 方法的基本定义结构如下: ```ruby def method_name # 方法体 end ``` 若要定义接受参数的方法,语法稍作调整: ```ruby def method_name(var1, var2) # 方法体 end ``` 还可以为参数设置默认值:...

    Ruby-Functo是ruby中的可组合方法对象

    在传统的面向对象编程中,我们通常会定义类和实例方法来封装逻辑,而在函数式编程中,我们倾向于将函数作为一等公民,这意味着它们可以被赋值给变量、作为参数传递,也可以作为其他函数的返回值。 在Ruby中,Functo...

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    例如,可以为不同的类定义相同的方法名,它们会根据对象的类型执行不同的操作。 ```ruby class Animal def speak raise "Abstract method" end end class Dog def speak "Woof!" end end class Cat def ...

    Ruby面向对象编程中类的方法与类的扩展

    本文介绍了Ruby中类方法的定义方式以及如何通过类扩展和对象扩展来增强类的功能。这些强大的特性使得Ruby成为了一种非常灵活的语言,能够轻松地扩展类和对象的行为,同时保持代码的清晰和可维护性。理解这些概念对于...

    Ruby元编程pdf

    Ruby元编程的核心概念包括类、模块、方法、变量和对象的动态性。以下是对这些概念的详细解释: 1. **类与模块**:在Ruby中,类和模块都是对象。你可以动态地创建和修改它们。例如,你可以通过`Class.new`创建一个新...

    Ruby-Ruby的面向对象的枚举

    Ruby的枚举通常指的是枚举类(Enum Class),这是一种自定义枚举类型的方法,允许我们创建具有特定行为的枚举。在本篇文章中,我们将深入探讨Ruby如何实现面向对象的枚举以及它在实际开发中的应用。 首先,让我们...

    Ruby语言规范

    - **类方法**:定义类方法时,使用`self`关键字。 **示例**: ```ruby class Foo def self.bar # 类方法实现 end end ``` ##### 方法调用 - **参数括号**:调用方法时,参数同样需用括号括起来,无参数时可省略...

    Ruby编程Ruby Programming

    - **属性与方法**:类中的属性用于存储数据,方法则定义对象的行为。 #### 3.2 继承与多态 - **继承**:子类可以从父类继承属性和方法。 - **多态**:不同类的对象可以通过共同接口调用相同的方法,表现出不同的...

    Ruby编程.pdf

    在定义方法之后,可以通过调用方法来执行其功能。调用方法时,将参数放在圆括号内,并且可以将方法的返回值传递给其他函数。在示例中,`sayGoodnight`方法被调用两次,每次调用都将结果传递给`puts`方法以打印到标准...

    Ruby-Behaves是一个gem可以帮助您定义类之间的行为

    在Ruby中,模块(Module)是一种用于组织代码的方式,可以包含常量、方法和类定义。当模块被混入到类中时,其所有方法都变得对那个类及其实例可见。Behaves gem正是利用了这一特性,让开发者能够方便地添加或移除类...

    Ruby元编程 源代码 Metaprogramming Ruby source code

    `class 语法常用于在类的上下文中定义方法。 3. **消息发送**:`send`或`__send__`方法可以动态地调用其他方法,这使得你可以根据条件或数据来决定调用哪个方法。 4. **反射API**:Ruby提供了一系列的反射API,如`...

    Ruby类实例变量、类实例方法和类变量、类方法的区别

    在Ruby语言中,类实例变量、类实例方法与类变量和类方法是构成面向对象编程模型的重要组成部分。它们各自有不同的用途和行为特性,下面详细介绍这些概念的区别以及它们的使用场景。 首先,类实例变量和类实例方法都...

    Ruby定义私有方法(private)的两种办法

    以下是Ruby定义私有方法的两种主要方式: **途径1:先定义方法后声明私有** ```ruby class C def public_method private_method end def private_method puts "This is a private method." end private :...

    Ruby-MongoMapper针对Mongo的一个Ruby对象映射器

    1. **模型定义**:你可以定义一个Ruby类并继承自`MongoMapper::Document`,然后使用`key`方法声明属性,这类似于ActiveRecord中的`attr_accessor`。例如: ```ruby class User include MongoMapper::Document ...

    元编程 Ruby

    6. 元类(metaclass)或singleton class:Ruby中的每个类都拥有一个元类,元编程中会使用到这个元类来定义类方法或动态修改类。 7. 打开类(Open Class):在Ruby中,你可以随时打开一个已经定义的类,并给它添加新...

    ruby-enum:在Ruby中定义枚举的便捷方法

    目录散列检索键和值将键映射到值将值映射到键重复的枚举键或重复的值遗产贡献版权和许可相关项目 用法枚举可以定义为常量或类方法来访问,这是优先考虑的问题。 常数定义枚举,并将其作为常量引用。 class ...

    笨方法学ruby-中文版

    书中会讲解类、对象、继承、模块(mixins)以及方法的动态性,这些都是理解Ruby编程的关键。 3. **异常处理**:Ruby中的异常处理机制允许程序在遇到错误时优雅地恢复或终止。书中会介绍如何使用begin/rescue/ensure...

Global site tag (gtag.js) - Google Analytics