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
使用带参数的方法的最重要缺点是,每次调用此类方法时,都需要记住参数的数量。如果一个方法接受三个参数,而您仅传两个参数,则显示错误。
#!/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 。
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允许您声明可使用可变数量参数的方法。
#!/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
要访问此方法,无需创建Accounts类的对象。
alias 语句
这为方法或全局变量提供了别名,该方法的别名将保留方法的当前定义,即使方法被覆盖也是如此。
alias method-name method-name alias global-variable-name global-variable-name
示例
alias foo bar alias $MATCH $&
在这里,无涯教程为bar定义了foo别名,而$MATCH是$&的别名。
undef 语句
通过使用 undef 和 alias ,可以独立于超类修改类的接口,但请注意,内部方法对self的调用可能会破坏程序。
undef method-name
要取消定义名为 bar 的方法,请执行以下操作-
undef bar
参考链接
https://www.learnfk.com/ruby/ruby-methods.html
标签:教程,end,name,parameters,Ruby,无涯,方法,def From: https://blog.51cto.com/u_14033984/8475495