Ruby - 方法

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

每当调用简单方法时,只写入方法名称为跟随 :

method_name

然而,当你调用一个方法时使用参数,您可以编写方法名称以及参数,例如 :

method_name 25,30

使用带参数的方法最重要的缺点是,无论何时调用这些方法,都需要记住参数的数量.例如,如果一个方法接受三个参数并且只传递两个参数,则Ruby会显示错误.

示例

#!/usr/bin/ruby

def test(a1 = "Ruby", a2 = "Perl")
   puts "The programming language is #{a1}"
   puts "The programming language is #{a2}"
end
test "C", "C++"
test

这将产生以下结果 :

The programming language is C
The programming language is C++
The programming language is Ruby
The programming language is Perl

从方法返回值

Ruby中的每个方法都默认返回一个值.此返回值将是最后一个语句的值.例如 :

def test
   i = 100
   j = 10
   k = 0
end

此方法在调用时将返回最后声明的变量 k .

Ruby return语句

ruby中的 return 语句用于从Ruby方法返回一个或多个值.

语法

return [expr[`,' expr...]]

如果给出两个以上的表达式,则包含这些值的数组将是返回值.如果没有给出表达式,则nil将是返回值.

示例

return

OR

return 12

OR

return 1,2,3

看一下这个例子 :

#!/usr/bin/ruby

def test
   i = 100
   j = 200
   k = 300
return i, j, k
end
var = test
puts var

这将产生以下结果 :

100
200
300

参数变量数

假设您声明了一个方法有两个参数,每当你调用这个方法时,你需要传递两个参数.

但是,Ruby允许你声明使用vari的方法有多少参数.让我们检查一下这个&minus的样本;

#!/usr/bin/ruby

def sample (*test)
   puts "The number of parameters is #{test.length}"
   for i in 0...test.length
      puts "The parameters are #{test[i]}"
   end
end
sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"

在此代码中,您已声明了一个接受一个参数测试的方法示例.但是,此参数是可变参数.这意味着此参数可以包含任意数量的变量.因此,上面的代码将产生以下结果 :

The number of parameters is 3
The parameters are Zara
The parameters are 6
The parameters are F
The number of parameters is 4
The parameters are Mac
The parameters are 36
The parameters are M
The parameters are MCA

类方法

当在类定义之外定义方法时,方法是默认情况下标记为 private .另一方面,类定义中定义的方法默认标记为public.方法的默认可见性和私有标记可以通过模块的 public private 进行更改.

每当您想要访问类的方法时,首先需要实例化该类.然后,使用该对象,您可以访问该类的任何成员.

Ruby为您提供了一种在不实例化类的情况下访问方法的方法.让我们看看如何声明和访问类方法&减去;

class Accounts
   def reading_charge
   end
   def Accounts.return_date
   end
end

了解如何声明return_date方法.它声明为类名后跟一个句点,后跟方法的名称.您可以直接访问此类方法,如下所示;

Accounts.return_date

要访问此方法,您无需创建Account类的对象.

Ruby alias Statement

这为方法或全局提供了别名变量.别名不能在方法体内定义.该方法的别名保留了方法的当前定义,即使重写方法也是如此.

为编号的全局变量创建别名($ 1,$ 2,...)被禁止.覆盖内置全局变量可能会导致严重问题.

语法

alias method-name method-name
alias global-variable-name global-variable-name

示例

alias foo bar
alias $MATCH $&

这里我们为bar和&dollar定义了foo别名; MATCH是&dollar的别名;&

Ruby undef语句

这将取消方法定义. undef 不能出现在方法体中.

通过使用 undef 别名,界面该类可以独立于超类修改,但请注意它可能是通过内部方法调用self来破坏程序.

语法

undef method-name

示例

取消定义名为的方法bar 执行以下操作 :

undef bar