Ruby中的方法是一个有名称的代码块,是与一个或多个对象关联的参数化的代码。调用时须给出方法名,接收者(所在对象),参数值,且最后一个表达式的值做为返回值。与Ruby方法相似的是代码块,它没有名字,且调用时只通过迭代器或被间接调用。
(一)方法
(1)定义方法
定义方法就是
代码如下:
def 方法名(参数列表)
方法体
end
最后一个表达式做为返回值返回,如果有值,则返回;无值则返回nil。可以省略return。
在类中定义的方法为实例方法,实例方法可以在类的实例对象上使用。如果是在一个特定的对象上定义方法,那么此方法就是一个单键方法,只能在这个对象上使用。
代码如下:
class Test
def instance_method_test(v)
puts "#{v}: instance method"
end
end
t1=Test.new
t2=Test.new
t1.instance_method_test("t1")
t2.instance_method_test("t2")
def t1.singleton_method_test(v)
puts "#{v}:singleton method"
end
t1.singleton_method_test("t1")
#t2.singleton_method_test("t2")
在ruby中,方法一般小写字母开头,如果超过一个单词,则由下划线隔开(看习惯)。有意思的是方法名可以以等号、问号、叹号结尾,且有不同的意义:以等号(=)结尾表示这是一个赋值方法(写属性);以问号(?)结尾表示一个断言方法,可以回答调用者提出问题的值,例如判断大小;叹号(!)结尾表示是一个可变方法,可能会影响到对象的状态,要小心使用。这三个符号很有意思,但它们不是必须的。
(2)取消方法
通过undef 方法名 可以取消方法。对于被继承的方法,undef可以取消子类中的继承来的方法,但不会取消父类中的此方法。
(3)方法参数
在参数中添加等号和值就可以为这一个参数设置默认值。如果参数有默认值,那么在调用方法时,可以为这个参数指定值或不指定值。
代码如下:
def createRole(name,level=1)
puts "role name is#{:name} level is #{level}"
end
createRole("way")
createRole("clound",5)
通过在参数前边加星号(*),可以为方法指定为可变参数个数(数组参数),且指定的个数最多为一个。
代码如下:
def add_Person(*users)
puts users
end
add_Person("a1","a2")
add_Person("a1","a2","a3")
如果要把数组传递给方法,要在数组前加星号(*)。
(二)代码块
方法调用后可以紧跟一个代码块,关联代码块的方法可以通过yield来调用。
代码如下:
def showMessage(i)
新闻热点
疑难解答