Block là một đoạn code ẩn danh truyền cho method, không phải object, không gán vào biến được.
- Viết bằng
{}(1 dòng) hoặcdo...end(nhiều dòng). - Method gọi block bằng
yield.
ruby
def greet
puts "Before"
yield # gọi block
puts "After"
end
greet { puts "Hello!" }
# Before
# Hello!
# After
# yield với argument
def double(n)
yield(n * 2)
end
double(5) { |x| puts x } # => 10
# Kiểm tra block có được truyền không
def safe_call
yield if block_given?
end