Blocks, Procs, and the "&" Bridge

📰 Dev.to · Figsy

Learn how to work with blocks and procs in Ruby, and how the '&' symbol bridges them

intermediate Published 20 Jun 2026
Action Steps
  1. Define a block in Ruby using the '{ ... }' or 'do ... end' syntax
  2. Use the '&' symbol to convert a block into a proc
  3. Use the '&' symbol to convert a proc into a block
  4. Apply the 'yield' keyword to execute a block inside a method
  5. Test the difference between blocks and procs in Ruby
Who Needs to Know This

Ruby developers and programmers who want to improve their understanding of blocks and procs will benefit from this article, as it provides a clear explanation of the concepts and their usage

Key Insight

💡 The '&' symbol is used to convert between blocks and procs in Ruby

Share This
💡 Understand how to work with blocks and procs in Ruby using the '&' bridge

Key Takeaways

Learn how to work with blocks and procs in Ruby, and how the '&' symbol bridges them

Full Article

Title: Blocks, Procs, and the "&" Bridge

URL Source: https://dev.to/figsify/blocks-procs-and-the-bridge-3bn0

Published Time: 2026-06-20T19:46:19Z

Markdown Content:
# Blocks, Procs, and the "&" Bridge - DEV Community
[Skip to content](https://dev.to/figsify/blocks-procs-and-the-bridge-3bn0#main-content)

[![Image 1: DEV Community](https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png)](https://dev.to/)

[Powered by Algolia](https://www.algolia.com/developers/?utm_source=devto&utm_medium=referral)

[Log in](https://dev.to/enter?signup_subforem=1)[Create account](https://dev.to/enter?signup_subforem=1&state=new-user)

## DEV Community

![Image 2](https://assets.dev.to/assets/heart-plus-active-9ea3b22f2bc311281db911d416166c5f430636e76b15cd5df6b3b841d830eefa.svg)0 Add reaction

![Image 3](https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg)0 Like ![Image 4](https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg)0 Unicorn ![Image 5](https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg)0 Exploding Head ![Image 6](https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg)0 Raised Hands ![Image 7](https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg)0 Fire

0 Jump to Comments 0 Save Boost

Copy link

Copied to Clipboard

[Share to X](https://twitter.com/intent/tweet?text=%22Blocks%2C%20Procs%2C%20and%20the%20%22%26%22%20Bridge%22%20by%20Figsy%20%23DEVCommunity%20https%3A%2F%2Fdev.to%2Ffigsify%2Fblocks-procs-and-the-bridge-3bn0)[Share to LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fdev.to%2Ffigsify%2Fblocks-procs-and-the-bridge-3bn0&title=Blocks%2C%20Procs%2C%20and%20the%20%22%26%22%20Bridge&summary=%26amp%3Bblk%20in%20a%20parameter%20list%20turns%20a%20block%20into%20a%20Proc%3B%20%26amp%3Bproc%20at%20a%20call%20turns%20a%20Proc%20back%20into%20a...&source=DEV%20Community)[Share to Facebook](https://www.facebook.com/sharer.php?u=https%3A%2F%2Fdev.to%2Ffigsify%2Fblocks-procs-and-the-bridge-3bn0)[Share to Mastodon](https://s2f.kytta.dev/?text=https%3A%2F%2Fdev.to%2Ffigsify%2Fblocks-procs-and-the-bridge-3bn0)

[Share Post via...](https://dev.to/figsify/blocks-procs-and-the-bridge-3bn0#)[Report Abuse](https://dev.to/report-abuse)

[![Image 8: Figsy](https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2175536%2Fc8805edf-716f-4a35-a631-8d86c91f093f.jpg)](https://dev.to/figsify)

[Figsy](https://dev.to/figsify)
Posted on Jun 20

# Blocks, Procs, and the "&" Bridge

[#ruby](https://dev.to/t/ruby)[#rails](https://dev.to/t/rails)[#programming](https://dev.to/t/programming)

> `&blk` in a parameter list turns a block into a Proc; `&proc` at a call turns a Proc back into a block.

## [](https://dev.to/figsify/blocks-procs-and-the-bridge-3bn0#1-a-block-is-syntax-not-an-object) 1. A block is syntax, not an object

A block is the `{ ... }` or `do ... end` you attach to a method call. It is not a value you can hold by itself.

You can't store a block in a variable — Ruby won't even parse it:

```
b = { |x| x * 2 } # SyntaxError
# Ruby reads { } here as a hash, not a block.
```

A method can carry at most one block:

```
[1, 2, 3].each { |x| puts x } # fine — exactly one block
# There is no syntax to attach a second block to the same call.
```

Inside a method you reach the block with `yield`:

```
def run
yield # runs whatever block was attached
yield # you can run it again
end
run { puts "hi" } # prints: hi hi
```

A block is _not_ a normal argument. It rides along separately from the things in the paren
Read full article → ← Back to Reads