Ruby方法跟其他编程语言中的函数非常相似, Ruby方法用于捆绑到一个单元中的一个或多个重复的语句。
方法名称应以小写字母开始。如果一个方法的名称以大写字母开始,Ruby可能会认为这是一个常数,因此可以正确解析调用。
方法应该定义Ruby的之前调用他们,否则会引发一个异常未定义的方法调用。
语法:
def method_name [( [arg [= default]]...[, * arg [, &expr ]])] expr..end
所以,可以定义一个简单的方法如下:
def method_name expr..end
可以表示方法,接受这样的参数:
def method_name (var1, var2) expr..end
可以设置默认值,如果不传递所需的参数调用方法的参数将用于:
def method_name (var1=value1, var2=value2) expr..end
无论何时调用方法很简单,只需写方法的名称如下:
然而,当调用一个方法带有参数,编写方法的名称以及参数,如:
使用带参数的方法的最重要缺陷是,每当调用这些方法需要记住的参数个数。例如,如果一个方法接受三个参数传递只有两个,那么Ruby的将显示一条错误。
实例:
#!/usr/bin/rubydef test(a1="Ruby", a2="Perl") puts "The programming language is #{a1}" puts "The programming language is #{a2}"endtest "C", "C++"test
这将产生以下结果:
The programming language is CThe programming language is C++The programming language is RubyThe programming language is Perl
从方法中返回值:
在Ruby中的每一个方法返回默认值。这个返回值将是最后一个语句的值。例如:
def test i = 100 j = 10 k = 0end
此方法被调用时,将返回的最后声明的变量k的值。
Ruby return 语句:
Ruby的return语句用于从一个Ruby方法返回一个或多个值。
语法:
如果有两个以上的表达式给出,数组包含这些值将返回值。如果没有表达式,将会是nil值返回。
实例:
OR
return 12
OR
return 1,2,3
看看这个例子:
#!/usr/bin/rubydef test i = 100 j = 200 k = 300return i, j, kendvar = testputs var
这将产生以下结果:
100200300
可变数目的参数:
假设声明一个方法需要两个参数。每当你调用这个方法,需要随着它传递两个参数。
但是Ruby允许声明与可变数目的参数的方法。让我们来看看这一个示例:
#!/usr/bin/rubydef sample (*test) puts "The number of parameters is #{test.length}" for i in 0...test.length puts "The parameters are #{test[i]}" endendsample "Zara", "6", "F"sample "Mac", "36", "M", "MCA"
在这段代码中,已经声明接受一个参数测试方法示例。但是,这个参数是一个可变参数。这意味着,这个参数可以在任意数量的变量。所以上面的代码将产生以下结果:
The number of parameters is 3The parameters are ZaraThe parameters are 6The parameters are FThe number of parameters is 4The parameters are MacThe parameters are 36The parameters are MThe parameters are MCA
类方法:
类定义之外定义一个方法时,该方法被默认标记为私有。另一方面,在类定义中定义的方为默认标示公有。可以改变默认可视性和私有标记的方法,由公共或私有的模块。
每当想访问一个类的方法,首先需要实例化的类。然后,使用对象可以访问任何类的成员。
Ruby提供了一种方法来访问的方法,没有实例化一个类。让我们来看看如何声明一个类的方法和访问:
class Accounts def reading_charge end def Accounts.return_date endend
看看方法return_date声明。声明随后的一个时期,这是其次的方法名与类名。可以直接访问这个类的方法如下:
Accounts.return_date
要使用这种方法,不需要创建对象之类的帐户。
Ruby alias 语句:
方法或全局变量的别名。别名不能被定义在方法体。方法aliase保持当前定义的方法,即使方法是覆盖。
为全局变量($ 1,$ 2,...)的取别名是禁止。覆盖内置的全局变量,可能导致严重的问题。
语法:
alias method-name method-namealias global-variable-name global-variable-name
例如:
alias foo baralias $MATCH $&
这里我们定义了foo的别名bar和$MATCH函数的别名$&
Ruby undef 语句:
这取消的方法定义。一个是undef不能出现在方法体中。
通过使用 undef 和 alias, 可以从超类独立修改类的接口,但注意到这可能被打破程序由内部自行的方法调用。
语法:
实例:
取消定义bar方法,如下:
undef bar
新闻热点
疑难解答
图片精选