Ruby常见方法

1.       capitalize方法
该方法是字符串类String的一个方法,对所有字符串都适用。它的作用是将调用该方法的字符串的首字母改为大写。举例如下:
s = “ruby”
s.capitalize  → “Ruby”
又如:
def say_goodnight(name)
result = "Good night, #{name.capitalize}"
#capitalize将参数name所代表的字符串的首字母改为大写
return result #其实这条语句是多余的,因为一个方法如果没有指定返回值,则默认返回最后一个表达式的值
end
puts say_goodnight("mum")
输出结果:
Good night,Mum
2.       each方法
each方法经常与block一起使用,它的最大好处能够在某冲情况下取代for循环的功能。each方法会将调用它的对象中的所有元素依次赋给与each方法相关联的block的变量。
例如:
(‘a’..’e’).each {|char| print char}    → abcde  #range中两点表示全闭区间,三点表示前闭后开
在上面的例子中,range对象(‘a’..’e’)调用each方法,each方法将(‘a’..’e’)对象的每个值依次赋给block{|char| print char}中的char变量。
再来看下面这个例子:
file = File.open(“filename”)#打开名称为filename的文件,并将其内容写入到file中
file.each {|line|
puts line
}
file.close  #文件打开后必须关闭
输出结果:
this is line one
this is line two
this is line three
and so on…
3.       times方法
调用times方法的一般是具体的数字(整数)对象,times会按照对象的要求来指定其后block的执行次数。该方法是整数支持的集中常用的迭代器之一。
例如:
5.time { print “*” }
输出结果:
*****
4.       upto()方法
upto()方法会有一个参数,它的参数的值将与调用它的对象的值构成一个range,然后再将该range内的值依次赋值给其后block中的变量。该方法是整数支持的集中常用的迭代器之一。
例如:
3.upto(8) { |a| print a }
输出结果为:
345678
5.       inject方法
inject方法可以遍历集合中的所有成员以累计出一个值,一般地,他可以求得集合中元素的和或积。例如:
[2,4,6,8].inject(0) { |sum,element| sum + element }            输出结果:20
[2,4,6,8].inject(1) { |product,element| product * element }   输出结果:384
上述两条语句展示了求集合中元素的和或积的方法。
inject方法的工作原理:
(1)        当inject有参数时,inject后面的block第一次执行时,sum或product的值被设置为参数的值,而element的值被设置为集合中第一个元素的值。接下来每次再执行block时,sum或product的值被设置为上次调用block时的返回值,element即为集合中下一个元素的值。inject的最终结果是最后一次调用block的返回值。
(2)        当inject没有参数时,那么sum或product的初始值即为集合中第一个元素的初始值,表达式将会从第二个元素开始迭代。
根据上述说明,可以很容易得出下面这些表达式的结果:
[2,4,6,8].inject(3) { |sum,element| sum + element }            输出结果:23
[2,4,6,8].inject(2) { |product,element| product * element }   输出结果:768
[2,4,6,8].inject { |sum,element| sum + element }            输出结果:20
[2,4,6,8].inject { |product,element| product * element }   输出结果:384
调用inject方法的是一个集合,这个集合可以是数值Array,同时它还可以是range,例如:
 
(2..5).inject(3) { |sum,element| sum + element }            输出结果:17
(2..5).inject(2) { |product,element| product * element }   输出结果:240
该集合也可以是数值Array的一部分,例如:
a = [2,4,6,8,10] .
a[0,2].inject(3) { |sum,element| sum + element }
输出结果:9
6.       abs方法
abs方法的作用是取得调用它的数字对象的绝对值。例如:
a = -123
a.abs     →123
(-123).abs    → 123
注意,abs(num)这种表达方式是错误的。
7.       downto()方法
downto()方法是upto()方法的逆方法。downto()方法有一个参数,调用它的对象的值它的参数的值将与构成一个range,然后再将该range内的值依次赋值给其后block中的变量。该方法是整数支持的集中常用的迭代器之一。
例如:
20.downto(15) { |i| print i, “  “}
输出结果:20  19  18  17  16  15
8.       step()方法
该方法的形式为:a.step(b,c) {block},它有两个参数,其中第一个参数b与调用该方法的数字对象b构成一个range。相当于是一个以a为首项,b为末项,c为公差的一个等差数列。step方法的作用就是将该等差数列的各项分别传入block中,即进行迭代。
例如:
10.step(20,2) {|i| print i, “,”}
输出结果:
10,12,14,16,18,20
注意,从数学的意义上讲,在setp方法中并不要求b = n*c成立(n为整数),只需要满足a < b成立即可。
例如:
12.step(26,5.1) {|i| print i, “,”}
输出结果:
12.0,17.1,22.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值