Ruby迭代器

Hikarikiri發表於2021-08-10

迭代器 iterator

  • 不同於while迴圈的用法 ,each 是一個陣列的方法,遍歷陣列中的無數,稱之為迭代器iterator
  • 其中do….end是each方法的引數 ,稱作匿名方法(code block)
3.times do
    puts "hi"
end
code block 匿名函式 (無方法名)
{puts "hello"} # 大括號的匿名函式  單行

do
    puts "Hello"  # 這也是一段匿名函式  多行用do...end
end

內部迭代器

people = ["Lily" , "Hikari" , "Lucy"]
people.each do |person|
    puts person
end

# 反覆5次
5.times { puts "Ruby"}

#從一數到九
1.upto(9){ |x| puts x}

其它迭代方式

# 迭代並返回一個新陣列
a = ["a","b","c","d","e"]
b = a.map do |x|
    x + "!"
end

puts b.inspect
# 找出符合條件的值
b = [1,2,3].find_all do |x|
    x % 2 == 0
end
puts b.inspect

# 迭代並根據條件刪除
a = ["a","b","c"]
a.delete_if do |x|
    x >= "b"
end
puts a.inspect
# 排序
[2,1,3].sort! do |a,b|
    b<=>a
end
=begin
比較操作符
a <=> b
如a > b 返回 1
如a==b 返回 0
如a< b 返回 -1
=end

計算總和 reduce

(5..10).reduce do |sum , n|
    sum + n
end
#找出最長字串
a = ["cat","sheep","bear"]
max = a.reduce do |memo , word|
    memo.length > word.length ? memo : word
end
puts max
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章