美文网首页
Ruby 方法的分类

Ruby 方法的分类

作者: changsanjiang | 来源:发表于2017-10-20 10:53 被阅读11次

`根据接收者种类的不同, Ruby 的方法可分为以下3类.

  • 实例方法
  • 类方法
  • 函数式方法

实例方法

实例方法是最常用的方法. 假设有一个对象(实例), 那么以这个对象为接收者的方法就称为实例方法.
实例:

"10, 20, 30, 40".split(",")     #=> ["10", " 20", " 30", " 40"]
[10, 20, 30].index(20)          #=> 1
1000.to_s                       #=> "1000"

在上述代码中, 从上到下分别以字符串, 数组, 数值对象为接收者.
调用对象的实例方法后, 程序就会执行对象所属的类中预先定好的处理.
虽然相同名称的方法执行的处理大多都是一样的, 但具体执行的内容则会根据对象类型的不同而存在差异. 例如, 几乎所有的对象都有to_s方法, 这是一个把对象内容以字符串形式输出的方法. 然而, 虽然都是字符串形式, 但在数值对象与时间对象的情况下, 字符串形式以及字符串的创建方法都不一样.

p 10.to_s        #=> "10"
p Time.now.to_s  #=> "2017-10-20 10:37:45 +0800"

类方法

接收者不是对象而是类本身的方法, 我们称为类方法. 例如, 我们在创建对象时就是用到了类方法.

Array.new              #=> 创建新的数组
File.open("fileName")  #=> 创建新的文件对象
Time.now               #=> 创建新的  Time 对象

此外, 不直接对实例进行操作, 只是对该实例所属的类进行相关操作时, 也会用到类方法. 例如: 修改文件名时, 就会使用文件类方法.

File.rename(oldName, newName)  #=> 修改文件名

类方法也有运算符的形式.

Array[''a", "b", "c", "d"]  #=> 创建数组

调用类方法时, 可以使用::代替.. 在 Ruby 语法中, 两者所代表的意思是一样的.

函数式方法

没有接收者的方法, 我们称之为函数式方法.
虽说没有接收者, 但并不表示该方法就真的没有可作为接收者的对象, 只是在函数式方法的情况下, 可以省略而已.

print "hello!"  #=>  在命令行输出字符串
sleep(10)  #=> 在指定的时间内睡眠, 终止程序

函数式方法的执行结果不会根据接收者而发生变化. 程序在执行 print 方法以及 sleep 方法时, 并不需要知道接收者是谁. 反过来, 不需要接收者的方法就是函数式方法.

相关文章

  • Ruby 方法的分类

    `根据接收者种类的不同, Ruby 的方法可分为以下3类. 实例方法 类方法 函数式方法 实例方法 实例方法是最常...

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

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

  • From Objective-C to Ruby(3)-方法和块

    方法 定义方法 OC: ruby: 调用方法 OC: ruby: 参数的默认值 OC: 方法的返回值 OC: ru...

  • 器-用:ruby高效能方法 — reduce方法

    一、reduce方法的作用 reduce方法是ruby中的一个重要的方法,也叫inject方法(Ruby1.9之前...

  • ruby 数据类型

    1. Ruby 字符串(String) 2. Ruby 数组 3. Ruby 哈希 哈希的内置方法 4. Ruby...

  • Ruby、RVM-使用总结

    Ruby、RVM-使用总结 安装或更新Ruby 方法一:使用Homebrew安装Ruby Homebrew 是什么...

  • Ruby方法

    Ruby 方法与其他编程语言中的函数类似。Ruby 方法用于捆绑一个或多个重复的语句到一个单元中。方法名应以小写字...

  • Ruby 方法

  • Ruby 方法

    Ruby 方法用于捆绑一个或多个重复的语句到一个单元中。方法名应以小写字母开头。如果您以大写字母作为方法名的开头,...

  • 常用的Ruby方法

    1 当你发送消息到Ruby对象时,Ruby查询与消息同名的方法来调用。Ruby进行方法调用主要有两种方式,obj...

网友评论

      本文标题:Ruby 方法的分类

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