Bird
Raised Fist0
Rubyprogramming~5 mins

Block syntax (do..end and curly braces) in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a block in Ruby?
A block is a chunk of code enclosed between do..end or curly braces { } that can be passed to methods and executed.
Click to reveal answer
beginner
When should you use do..end versus curly braces { } for blocks?
do..end is usually used for multi-line blocks, while curly braces { } are preferred for single-line blocks.
Click to reveal answer
beginner
How do you pass a block to a method in Ruby?
You write the method call followed by a block using either do..end or { }. The method can then execute the block using yield.
Click to reveal answer
beginner
Example: What does this code print?
3.times do
  puts "Hello"
end
It prints "Hello" three times, each on a new line.
Click to reveal answer
intermediate
Can you use both do..end and curly braces { } interchangeably?
Yes, both define blocks, but style and readability guide when to use each. Curly braces for short blocks, do..end for longer ones.
Click to reveal answer
Which block syntax is preferred for single-line blocks in Ruby?
Ado..end
Bsquare brackets []
Cparentheses ()
D{} (curly braces)
What keyword inside a method executes the passed block?
Ayield
Bcall
Cexecute
Drun
Which of these is a valid way to write a block in Ruby?
Amethod do |x| x * 2 end
Bmethod (|x| x * 2)
Cmethod { |x| x * 2 }
Dmethod [|x| x * 2]
What will this code output?
5.times { print "*" }
A*****
B* * * * *
C5
DError
Which block syntax is usually used for multi-line blocks?
A{} (curly braces)
Bdo..end
C() parentheses
D<> angle brackets
Explain the difference between do..end and curly braces { } when writing blocks in Ruby.
Think about block length and style.
You got /4 concepts.
    Describe how a Ruby method can use a block passed to it.
    Focus on method and block interaction.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which block syntax is generally preferred for multi-line blocks in Ruby?
      easy
      A. Both are equally preferred for multi-line blocks
      B. { }
      C. Neither; Ruby does not support blocks
      D. do..end

      Solution

      1. Step 1: Understand block syntax options

        Ruby supports two block syntaxes: do..end and curly braces { }.
      2. Step 2: Identify usage for multi-line blocks

        do..end is preferred for multi-line blocks because it improves readability.
      3. Final Answer:

        do..end -> Option D
      4. Quick Check:

        Multi-line blocks use do..end [OK]
      Hint: Use do..end for multi-line blocks, braces for single-line [OK]
      Common Mistakes:
      • Using curly braces for multi-line blocks reduces readability
      • Thinking Ruby doesn't support blocks
      • Believing both syntaxes are identical in all cases
      2. Which of the following is the correct syntax for a single-line block that prints each number in an array?
      easy
      A. [1, 2, 3].each { |n| puts n }
      B. [1, 2, 3].each { n puts | }
      C. [1, 2, 3].each (|n| puts n )
      D. [1, 2, 3].each do |n| puts n

      Solution

      1. Step 1: Identify correct block syntax for single-line

        Single-line blocks use curly braces { } with parameters inside pipes | |.
      2. Step 2: Check syntax correctness

        [1, 2, 3].each { |n| puts n } correctly uses { |n| puts n }. Others have syntax errors.
      3. Final Answer:

        [1, 2, 3].each { |n| puts n } -> Option A
      4. Quick Check:

        Single-line block with braces and pipes [OK]
      Hint: Use { |var| ... } for single-line blocks [OK]
      Common Mistakes:
      • Missing pipes around block parameters
      • Using do..end without proper line breaks
      • Incorrect placement of pipes or braces
      3. What is the output of the following Ruby code?
      (1..3).map { |x| x * 2 }
      medium
      A. [1, 2, 3]
      B. [2, 4, 6]
      C. [3, 6, 9]
      D. SyntaxError

      Solution

      1. Step 1: Understand the range and map method

        The range (1..3) produces numbers 1, 2, 3. The map method applies the block to each number.
      2. Step 2: Calculate each mapped value

        Each number is multiplied by 2, resulting in 2, 4, and 6.
      3. Final Answer:

        [2, 4, 6] -> Option B
      4. Quick Check:

        Map doubles each element [OK]
      Hint: map applies block to each element and returns new array [OK]
      Common Mistakes:
      • Confusing map with each (which returns original array)
      • Expecting a syntax error due to block syntax
      • Misunderstanding range behavior
      4. Identify the error in this Ruby code:
      5.times do |i| puts i }
      medium
      A. Missing closing end for the block
      B. Missing block parameter pipes | |
      C. Incorrect use of curly brace to close a do..end block
      D. No error, code runs fine

      Solution

      1. Step 1: Check block opening and closing syntax

        The block starts with do but incorrectly ends with a curly brace }.
      2. Step 2: Understand correct block closure

        Blocks opened with do must close with end, not }.
      3. Final Answer:

        Incorrect use of curly brace to close a do..end block -> Option C
      4. Quick Check:

        do..end blocks cannot close with braces [OK]
      Hint: Match do with end, braces with braces [OK]
      Common Mistakes:
      • Mixing do..end with curly braces
      • Forgetting to close the block
      • Misplacing block parameter pipes
      5. Given the array [1, 2, 3, 4], which block syntax correctly filters even numbers and returns them as a new array?
      hard
      A. [1, 2, 3, 4].select { |n| n.even? }
      B. [1, 2, 3, 4].select do |n| n.even?
      C. [1, 2, 3, 4].select { n.even? }
      D. [1, 2, 3, 4].select do n.even? end

      Solution

      1. Step 1: Understand the select method and block parameters

        select filters elements for which the block returns true. The block must receive each element as a parameter.
      2. Step 2: Check syntax correctness

        [1, 2, 3, 4].select { |n| n.even? } correctly uses curly braces with block parameter |n| and calls n.even?. [1, 2, 3, 4].select do |n| n.even? has a syntax error (missing end). [1, 2, 3, 4].select { n.even? } misses block parameters. [1, 2, 3, 4].select do n.even? end misses pipes around parameter.
      3. Final Answer:

        [1, 2, 3, 4].select { |n| n.even? } -> Option A
      4. Quick Check:

        Curly braces with pipes for single-line filter [OK]
      Hint: Use { |var| condition } for concise filtering blocks [OK]
      Common Mistakes:
      • Omitting block parameters
      • Mixing do..end without pipes for parameters
      • Using incorrect block syntax causing errors
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard