在Ruby中,塊(Block)和迭代器(Iterator)是實(shí)現(xiàn)自定義邏輯的兩種強(qiáng)大工具。下面分別介紹它們的用法和實(shí)現(xiàn)自定義邏輯的方法。
塊是Ruby中的一種代碼結(jié)構(gòu),它允許你在方法調(diào)用時傳遞一段代碼。塊可以用于實(shí)現(xiàn)自定義邏輯,例如在數(shù)組或集合上執(zhí)行操作。
示例:
# 自定義邏輯:將數(shù)組中的每個元素平方
numbers = [1, 2, 3, 4, 5]
squared_numbers = numbers.map { |number| number * number }
puts squared_numbers.inspect # 輸出:[1, 4, 9, 16, 25]
在這個例子中,我們使用了map
方法,它接受一個塊作為參數(shù)。塊中的代碼(|number| number * number
)對數(shù)組中的每個元素進(jìn)行平方操作。
迭代器是一種允許你遍歷集合的對象。在Ruby中,你可以使用each
方法創(chuàng)建一個迭代器。迭代器可以用于實(shí)現(xiàn)自定義邏輯,例如在遍歷集合時執(zhí)行特定操作。
示例:
# 自定義邏輯:計(jì)算數(shù)組中所有偶數(shù)的和
numbers = [1, 2, 3, 4, 5]
even_sum = numbers.select { |number| number.even? }.reduce(0) { |sum, number| sum + number }
puts even_sum # 輸出:6
在這個例子中,我們首先使用select
方法創(chuàng)建一個迭代器,該迭代器包含數(shù)組中的所有偶數(shù)。然后,我們使用reduce
方法對迭代器中的元素求和。reduce
方法接受一個初始值(在這里是0)和一個塊,塊中的代碼(|sum, number| sum + number
)將累加器(sum
)與當(dāng)前元素(number
)相加。
通過使用塊和迭代器,你可以輕松地實(shí)現(xiàn)自定義邏輯,從而對數(shù)據(jù)集執(zhí)行特定操作。