Bird
0
0

You want to create a dynamic class with Class.new that has an initializer accepting a name and a method greet returning "Hello, <name>". Which code correctly implements this?

hard📝 Application Q15 of 15
Ruby - Metaprogramming Fundamentals
You want to create a dynamic class with Class.new that has an initializer accepting a name and a method greet returning "Hello, <name>". Which code correctly implements this?
APerson = Class.new { def initialize(name) @name = name end def greet "Hello, " + name end }
BPerson = Class.new do def initialize(name) @name = name end def greet "Hello, #{@name}" end end
CPerson = Class.new do def initialize(name) name = @name end def greet "Hello, " + @name end end
DPerson = Class.new do def initialize(name) @name = name end def greet puts "Hello, #{@name}" end end
Step-by-Step Solution
Solution:
  1. Step 1: Check initializer assigns instance variable

    Person = Class.new do def initialize(name) @name = name end def greet "Hello, #{@name}" end end correctly assigns @name = name in initialize. Person = Class.new do def initialize(name) name = @name end def greet "Hello, " + @name end end reverses assignment incorrectly. Person = Class.new { def initialize(name) @name = name end def greet "Hello, " + name end } uses wrong block syntax. Person = Class.new do def initialize(name) @name = name end def greet puts "Hello, #{@name}" end end uses puts in greet which prints but does not return the string.
  2. Step 2: Check greet method returns correct string

    Person = Class.new do def initialize(name) @name = name end def greet "Hello, #{@name}" end end returns the string with interpolation. Person = Class.new { def initialize(name) @name = name end def greet "Hello, " + name end } uses undefined variable name. Person = Class.new do def initialize(name) @name = name end def greet puts "Hello, #{@name}" end end prints instead of returning.
  3. Final Answer:

    Person = Class.new do def initialize(name) @name = name end def greet "Hello, #{@name}" end end -> Option B
  4. Quick Check:

    Correct initializer and return string in greet [OK]
Quick Trick: Assign @name in initialize; return string in greet [OK]
Common Mistakes:
  • Reversing assignment in initialize
  • Using puts instead of returning string
  • Wrong block syntax with curly braces

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Ruby Quizzes