Ruby方法

Ruby方法用于避免在程序中一次又一次地编写相同的代码。它是一组有返回值的表达式。
Ruby方法与其他编程语言中的函数类似。 方法用于将一个或多个可重复语句合并成一个单独的包。

定义方法

要使用方法,需要先定义它。 Ruby方法是用def关键字开始,后跟方法名称定义的。最后还需要使用end关键字来表示方法定义结束。

方法名称应始终以小写字母开头。 否则,可能被误解为常数。

语法:

def methodName  
    code...  
end

示例:

#!/usr/bin/ruby

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

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby method_defining.rb
The programming language is C
The programming language is C++
The programming language is Ruby
The programming language is Python

F:\worksp\ruby>

在这里,我们使用def关键字定义了一个名称为:method_defining 的方法。 最后一行以end关键字结束,表示完成了方法的定义。并通过以下两行代码调用方法 -

method_defining "C", "C++"
method_defining

从方法返回值

默认情况下,Ruby中的每个方法都有返回一个值。 这个返回的值将是最后一个语句的值。 例如 -

def my_method
   i = 100
   j = 10
   k = 1
end

上面代码中,最后方法的返回值是 1

Ruby return语句

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

语法

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

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

示例

#!/usr/bin/ruby

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

执行上面代码,产生以下结果 -

100
200
300

可变参数数

假设声明一个方法需要两个参数,每当调用这个方法时,需要传递两个参数。但是,Ruby允许您声明使用可变数量参数的方法。 让我们来看一下这个示例 -

#!/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 "Maxsu", "6", "F"
sample "Mac", "38", "M", "MCA"

保存上面代码到文件:var-number-of-parameters.rb,执行上面代码,得到到如下结果 -

F:\worksp\ruby>ruby var-number-of-parameters.rb
The number of parameters is 3
The parameters are Maxsu
The parameters are 6
The parameters are F
The number of parameters is 4
The parameters are Mac
The parameters are 38
The parameters are M
The parameters are MCA

F:\worksp\ruby>

类方法

当方法在类定义之外定义时,默认情况下该方法被标记为private。 另一方面,默认情况下,类定义中定义的方法被标记为public。模块的默认可见性和private标记可以通过模块的publicprivate更改。

Ruby给出一种不用实例化一个类就可以访问一个方法。下面来看看看如何声明和访问类方法 -

class Accounts
   def reading_charge
   end
   def Accounts.return_date
   end
end

访问类方法 -

Accounts.return_date

上一篇: Ruby类和对象 下一篇: Ruby块