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
# -*- coding: UTF-8 -*-

def test(a1="Ruby", a2="Perl")
   puts "编程言语为 #{a1}"
   puts "编程言语为 #{a2}"
end
test "C", "C++"
test

以上实例运转输出成果为:

编程言语为 C
编程言语为 C++
编程言语为 Ruby
编程言语为 Perl

从办法回来值

Ruby 中的每个办法默许都会回来一个值。这个回来的值是最终一个句子的值。例如:

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

在调用这个办法时,将回来最终一个声明的变量 k。

Ruby return 句子

Ruby 中的 return 句子用于从 Ruby 办法中回来一个或多个值。

语法

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

假如给出超越两个的表达式,包括这些值的数组将是回来值。假如未给出表达式,nil 将是回来值。

实例

return

或

return 12

或

return 1,2,3

看看下面的实例:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

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

以上实例运转输出成果为:

100
200
300

可变数量的参数

假定您声明晰一个带有两个参数的办法,当您调用该办法时,您一起还需求传递两个参数。

可是,Ruby 答应您声明参数数量可变的办法。让咱们看看下面的实例:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def sample (*test)
   puts "参数个数为 #{test.length}"
   for i in 0...test.length
      puts "参数值为 #{test[i]}"
   end
end
sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"

在这段代码中,您现已声明晰一个办法 sample,承受一个参数 test。可是,这个参数是一个变量参数。这意味着参数能够带有不同数量的变量。以上实例运转输出成果为:

参数个数为 3
参数值为 Zara
参数值为 6
参数值为 F
参数个数为 4
参数值为 Mac
参数值为 36
参数值为 M
参数值为 MCA

类办法

当办法界说在类的外部,办法默许符号为 private。另一方面,假如办法界说在类中的,则默许符号为 public。

办法默许的可见性和 private 符号可经过模块(Module)的 publicprivate 改动。

当你想要拜访类的办法时,您首要需求实例化类。然后,运用目标,您能够拜访类的任何成员。

Ruby 供给了一种不必实例化即可拜访办法的办法。让咱们看看怎么声明并拜访类办法:

class Accounts
   def reading_charge
   end
   def Accounts.return_date
   end
end

咱们现已知道办法 return_date 是怎么声明的。它是经过在类名后跟着一个点号,点号后跟着办法名来声明的。您能够直接拜访类办法,如下所示:

Accounts.return_date

如需拜访该办法,您不需求创立类 Accounts 的目标。

Ruby alias 句子

这个句子用于为办法或全局变量起别号。别号不能在办法主体内界说。即便办法被重写,办法的别号也坚持办法的当时界说。

为编号的全局变量($1, $2,...)起别号是被制止的。重写内置的全局变量或许会导致严峻的问题。

语法

alias 办法名 办法名
alias 全局变量 全局变量

实例

alias foo bar
alias $MATCH $&

在这里,咱们现已为 bar 界说了别号为 foo,为 $& 界说了别号为 $MATCH。

Ruby undef 句子

这个句子用于撤销办法界说。undef 不能出现在办法主体内。

经过运用 undefalias,类的接口能够从父类独立修正,但请注意,在本身内部办法调用时,它或许会损坏程序。

语法

undef 办法名

实例

下面的实例撤销名为 bar的办法界说:

undef bar