Ruby Logo

Modern Features Quiz

Test your knowledge of modern Ruby features including pattern matching, refinements, frozen strings, numbered parameters, and safe navigation.

Home Ruby Modern Features Quiz

Modern Features Quiz

Test your understanding of Ruby's modern features including pattern matching, refinements, frozen string literals, numbered parameters, and safe navigation.

1 Pattern Matching Basics

data = { type: "user", id: 123, profile: { name: "Alice" } }

result = case data
         in { type: "user", id: id, profile: { name: name } }
           "User #{name} with ID #{id}"
         in { type: "admin", permissions: perms }
           "Admin with #{perms.length} permissions"
         else
           "Unknown data type"
         end

puts result

What will this pattern matching code output?

2 Refinements Scope

module StringExtensions
  refine String do
    def palindrome?
      self == self.reverse
    end
  end
end

def check_without_using
  "racecar".palindrome?
end

def check_with_using
  using StringExtensions
  "racecar".palindrome?
end

puts check_without_using
puts check_with_using

What happens when this code runs?

3 Frozen String Literals

# frozen_string_literal: true

str1 = "Hello"
str2 = "Hello"
str3 = "Hello".dup

puts str1.object_id == str2.object_id
puts str1.frozen?
puts str3.frozen?

str1 << " World"

What will happen when this code runs?

4 Numbered Parameters Usage

pairs = [["a", 1], ["b", 2], ["c", 3]]

result1 = pairs.map { |letter, number| "#{letter}#{number}" }
result2 = pairs.map { "#{_1[0]}#{_1[1]}" }
result3 = pairs.map { "#{_1}#{_2}" }

puts result1 == result2
puts result1 == result3

What will this code output?

5 Safe Navigation Operator

users = [
  { name: "Alice", profile: { bio: "Developer" } },
  { name: "Bob", profile: nil },
  { name: "Carol" },
  nil
]

result = users.map { |user| user&.dig(:profile, :bio)&.upcase }
puts result.inspect

What will this code output?

6 Pattern Matching with Arrays

def process_coordinates(coords)
  case coords
  in [x, y] if x > 0 && y > 0
    "First quadrant"
  in [0, 0]
    "Origin"
  in [x, *rest] if rest.length > 1
    "Multi-dimensional: #{rest.length + 1}D"
  in [x, y]
    "2D point"
  else
    "Unknown"
  end
end

puts process_coordinates([3, 4])
puts process_coordinates([1, 2, 3, 4])
puts process_coordinates([-1, 5])

What will this code output?

7 Refinements vs Monkey Patching

What is the main advantage of refinements over traditional monkey patching?

8 Frozen String Literals Performance

# frozen_string_literal: true

array1 = 1000.times.map { "constant_string" }
array2 = 1000.times.map { "constant_string".dup }

puts "Array1 unique object_ids: #{array1.map(&:object_id).uniq.length}"
puts "Array2 unique object_ids: #{array2.map(&:object_id).uniq.length}"

What will this code output?

9 Numbered Parameters Limitations

data = [1, 2, 3]

# Which of these will work correctly?
result1 = data.map { |x| _1 * 2 }
result2 = data.map { _1 * 2 }
result3 = data.each_with_index { puts "#{_2}: #{_1}" }

Which statement about this code is correct?

10 Safe Navigation Complex Usage

class User
  attr_accessor :preferences

  def initialize
    @preferences = {}
  end
end

user = User.new
nil_user = nil

result1 = user&.preferences&.[]=(theme: "dark")
result2 = nil_user&.preferences&.[]=(theme: "dark")

puts user.preferences
puts result1.inspect
puts result2.inspect

What will this code output?

11 Pattern Matching with Guards

ages = [15, 25, 65, 5]

results = ages.map do |age|
  case age
  in n if n < 13
    "child"
  in n if n < 20
    "teen"
  in n if n >= 65
    "senior"
  in n
    "adult"
  end
end

puts results.inspect

What will this code output?

12 Modern Features Integration

# frozen_string_literal: true

module ArrayExtensions
  refine Array do
    def safe_first
      self&.first
    end
  end
end

using ArrayExtensions

data = [
  [1, 2, 3],
  [],
  nil
]

result = data.map { _1&.safe_first || "empty" }

This code combines multiple modern Ruby features. What does it demonstrate?

Quick Navigation

Related Topics

Video Tutorial

Watch and learn modern features quiz

Pro Tip: After reading through the content above, watch this video to reinforce your understanding and see the concepts in action!