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