Ruby学习--关于方法(1)
【方法小结】
关于方法的那些细节
1. 定义
ruby方法的定义格式是通过关键字def end的来定义的 ?具体格式如下
ded 方法名[参数1,参数2,。。。]
表达式
[return 表达式]?
end
2. 方法命名
? 提到方法肯定少不了方法命名,ruby方法的命名规则同变量命名一样采用默认机制的规则命名 ?具体规则如下
2.1 方法名必须以一个小写字母开头(如果以大写字母开头, 当ruby在调用这个方法的时候,它首先会以为这是一个常量,而不是当一个方法使用。),后跟数字/字母/下划线等
2.2 表示查询的方法通常以?结尾 ?如 instance_of?
2.3 危险的或者会修改接收者对象的方法,通常用!结尾。 例如 String 提供的chop和chop! ?第一个方法返回修改后的字符串,第二个则就地修改对象。
2.4 可以被赋值的方法以一个=结尾。
2.5 只有以上3个特殊字符可以作为方法的后缀。
3. 方法参数
3.1 ruby方法有一个特点(之前只用的语言中没有可以这样使用的)就是在声明方法时可以指定方法参数的默认值 ?例如:
defname(name=“seek”)
”#{name}“
end
name ? ?--> ? seek
name("love") ?--> love
3.2 Ruby方法参数两边的括号可有可无,当有参数是使用括号,没有参数时可以不加括号。 例如:
def hello(name)
name
end
def hello
”hello“
end
3.3 可变长度的参数列表,如果希望传入可变个数的参数,或者想用一个形参接受多个参数,只需在普通的参数名前放一个"*"号即可,这些多个参数会被装入一个数组中。
例如:
def hello(name,*hobby)
"#{name} like #{hobby.join(',')}"
end
hello("seek")--> seek like
hello("seek","ruby")--> seek like ruby
hello("seek","java","ruby")--> seek like java,ruby
3.4 如果方法的最后一个参数前有个&做前缀,Ruby将认为他是一个Proc对象(),它将会被从其参数列表中删除,并将Proc对象转换成一个block,然后关联到该方法。
4. 返回值
每个被调用的方法都有一个返回值,ruby方法的返回值是执行的最后一个表达式的值,或者使用return表达式显示返回的值。如果给return多个参数,方法会将它们以数组的形式返回。
?
?
?
?