ruby的迭代器

1、数组的迭代器

ary = [1,2,3,4,5,6,7]
ary.each{|x|
   puts x
}

或者可以用each do end的写法

ary = [1,2,3,4,5,6,7]
ary.each do |x|
   puts x
end

也可以用each_with_index来获取每次访问数组的index

ary = [1,2,3,4,5,6,7]
ary.each_with_index do |x,index|
  print x," index is ",index,"\n"
end

2、hash的迭代器

ary = {"first" => "kaka","second" => "nana","third" => "mary"}
ary.each do |key,value|
  print key," ",value,"\n"
end

3、其它的迭代器

3.times do |x|
   puts "hello#{x}"
end


1.upto(9) do |x|
   puts x
end

# 迭代并造出另一个阵列
a = [ "a", "b", "c", "d" ]
b = a.map {|x| x + "!" }
puts b.inspect  # 结果是["a!", "b!", "c!", "d!"]

# 找出符合条件的值
b = [1,2,3].find_all{ |x| x % 2 == 0 }
b.inspect # 结果是[2]


# 迭代并根据条件删除
a = [51, 101, 256]
a.delete_if {|x| x >= 100 }  # 结果是[51]

# 客制化排序
[2,1,3].sort! { |a, b| b <=> a }  # 结果是[3, 2, 1]

# 计算总和
(5..10).inject {|sum, n| sum + n }

# 找出最长字串find the longest word
longest = ["cat", "sheep", "bear"].inject do |memo,word|
    ( memo.length > word.length )? memo : word
end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值