在Ruby中,塊(block)是一種非常強(qiáng)大的特性,它可以與其他結(jié)構(gòu)(如數(shù)組、哈希表、類、方法等)結(jié)合使用。塊可以被視為一個(gè)匿名函數(shù),它可以在執(zhí)行特定操作時(shí)傳遞給它。下面是一些常見(jiàn)的塊與其他結(jié)構(gòu)結(jié)合的示例:
array = [1, 2, 3, 4, 5]
array.each do |element|
puts element * 2
end
在這個(gè)例子中,塊與數(shù)組array
結(jié)合使用,對(duì)數(shù)組中的每個(gè)元素執(zhí)行乘以2的操作。
hash = {a: 1, b: 2, c: 3}
hash.each do |key, value|
puts "#{key}: #{value}"
end
在這個(gè)例子中,塊與哈希表hash
結(jié)合使用,遍歷哈希表的鍵值對(duì)并打印它們。
class MyClass
def initialize(name)
@name = name
end
def say_hello
puts "Hello, my name is #{@name}."
end
end
MyClass.new("John").say_hello
在這個(gè)例子中,塊與類MyClass
結(jié)合使用,通過(guò)new
方法創(chuàng)建一個(gè)新的實(shí)例,并調(diào)用say_hello
方法。
def my_method(arg1, &block)
puts "Argument 1: #{arg1}"
block.call(arg1 * 2) if block
end
my_method(5) { |x| puts "Block argument: #{x}" }
在這個(gè)例子中,塊與方法my_method
結(jié)合使用,接受一個(gè)參數(shù)和一個(gè)可選的塊。如果提供了塊,它將在方法內(nèi)部執(zhí)行。
這些示例展示了Ruby塊如何與其他結(jié)構(gòu)結(jié)合使用,以實(shí)現(xiàn)更靈活和強(qiáng)大的代碼。