Ruby中的各种方法定义和调用(函数式方法|实例方法|类方法)
来源:互联网 发布:论文查重软件免费 编辑:程序博客网 时间:2024/05/17 04:32
1.ruby方法的定义
(1)不带参数的方法
def function_name statement ……end
调用方式:
function_name or function_name()
(2)带参数的方法定义
def function_name(parm1, parm2, …) statement ……end
调用方式:
function_name(parm1,parm2, …)orfunction_nameparm1, parm2, …
(3)可变参数的方法定义
通过用“* 变量名”的形式来定义参数个数不确定的方法。
def foo(*args) argsendp foo(1, 2, 3)#至少需要指定一个参数的方法可以像下面这样定义def meth(arg, *agrs) [arg, args]endp meth(1)p meth(1, 2, 3)(4)关键字参数的方法定义
使用关键字参数定义方法的语法如下所示:
def 方法名(参数1: 参数1的值, 参数2: 参数2的值, …) 希望执行的处理end除了参数名外,使用“参数名 : 值”这样的形式还可以指定参数的默认值。用关键字参数改写计算立方体表面积的 area 方法的程序如下所示:
def area2(x: 0, y: 0, z: 0) xy = x * y yz = y * z zx = z * x (xy + yz + zx ) * 2endp area2(x: 2, y: 3, z: 4)p area2(z: 4, y: 3, x: 2)p area2(x: 2, z: 3) #=> 12备注:可以用散列作为实参传递给方法的关键字参数,实例如下:
def area2(x: 0, y: 0, z: 0) xy = x * y yz = y * z zx = z * x (xy + yz + zx ) * 2end args1 = {x: 2, y: 3, z: 4}p area2(args1) args2 = {x: 2, z: 3}p area2(args2)
(5)带块的方法定义
def myloop while true yield # 执行块 endendnum= 1 # 初始化nummyloop do puts "num is #{num}" # 输出num break if num > 100 # num超过100时跳出循环 num *= 2 # num乘2end
这里第一次出现了 yield,yield 是定义带块的方法时最重要的关键字。调用方法时通过块传进来的处理会在 yield 定义的地方执行。执行该程序后,num 的值就会像 1、2、4、8、16……这样 2 倍地增长下去,直到超过 100 时程序跳出 myloop 方法。
备注:方法的调用可以省略小括号()
2.Ruby方法的分类
(1)实例方法
实例方法是最常用的方法。假设有一个对象(实例),那么以这个对象为接收者的方法就被称为实例方法。举例来说
p "10, 20, 30, 40".split(",") #=> ["10", "20", "30", "40"]p [1, 2, 3, 4].index(2) #=> 1p 1000.to_s #=> "1000"(2)类方法
接收者不是对象而是类本身时的方法,我们称之为类方法。例如,我们在创建对象的时候就使用到了类方法。
Array.new # 创建新的数组File.open("some_file") # 创建新的文件对象Time.now # 创建新的 Time 对象调用类方法时,可以使用 :: 代替.。在 Ruby 语法中,两者所代表的意思是一样的。
类名.方法名类名::方法名(3)函数式方法
没有接收者的方法,我们称之为函数式方法。
print "hello!" # 在命令行输出字符串sleep(10) # 在指定的时间内睡眠,终止程序
0 0
- Ruby中的各种方法定义和调用(函数式方法|实例方法|类方法)
- ruby 中的类方法和实例方法
- Ruby中的类和实例方法比较
- ruby实例方法和类方法
- ruby-类方法定义
- Ruby类方法 实例方法
- ruby中类方法与实例方法调用
- ruby中类方法与实例方法调用
- Ruby 之方法定义和调用 FOR MAC
- Ruby中,在方法中定义类方法或实例方法的举例
- ruby的类方法与实例方法
- java中的类方法和实例方法
- Objective-C 函数(方法)的定义和调用
- Objective-C 函数(方法)的定义和调用
- python学习:类中的方法的定义和调用
- 类方法和对象方法间的各种相互调用的实例
- ruby方法调用
- Ruby-方法调用
- SortedNamePrice队列引入解法不节省内存解法代码实现
- Github 使用
- iOS 【快速集成QQ表情键盘】
- Leetcode Unique Word Abbreviation
- iOS 【Runtime 初理解】
- Ruby中的各种方法定义和调用(函数式方法|实例方法|类方法)
- Leetcode Summary Ranges
- Leetcode Perfect Squares
- iOS 【UIKit-方法- (void)loadView; 的详解】
- JAVA中的static关键字
- 如何从官网下载 Google Chrome 离线安装包
- Navicat 导入sql脚本文件
- sublime用nodejs直接运行js
- windows快捷方式