Project

General

Profile

Actions

Feature #20914

closed

Constructor Parameter Shortcuts

Added by artemb (Artem Borodkin) 24 days ago. Updated 23 days ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:120029]

Description

Constructor Parameter Shortcuts

I propose adding a new syntax to simplify the constructor definition in the classes. Defining a constructor often involves repetitive assignments of parameters to instance variables. This pattern is verbose and can easily become cumbersome, especially in classes with many instance variables. The proposed syntax allows instance variables to be automatically assigned from constructor arguments, improving code clarity and brevity.

Basic Usage:

  • Current:

    class User
      def initialize(name, age, email = nil)
        @name = name
        @age = age
        @email = email
      end
    end
    
  • Proposed:

    class User
      def initialize(@name, @age, @email = nil) =
    end
    

Named Parameters:

  • Current:

    class Product
      def initialize(name:, price:, description: 'No description available')
        @name = name
        @price = price
        @description = description
      end
    end
    
    product = Product.new(name: 'Laptop', price: 1000)
    
  • Proposed:

    class Product
      def initialize(@name:, @price:, @description: 'No description available') =
    end
    
    product = Product.new(name: 'Laptop', price: 1000)
    

Mixing Named and Positional Parameters:

  • Current:

    class Booking
      def initialize(date, time, customer:, notes: '')
        @date = date
        @time = time
        @customer = customer
        @notes = notes
      end
    end
    
    booking = Booking.new('2023-04-01', '14:00', customer: 'Alice', notes: 'First-time client')
    
  • Proposed:

    class Booking
      def initialize(@date, @time, @customer:, @notes: '') =
    end
    
    booking = Booking.new('2023-04-01', '14:00', customer: 'Alice', notes: 'First-time client')
    

Related issues 1 (1 open0 closed)

Related to Ruby master - Feature #5825: Sweet instance var assignment in the object initializerAssignedmatz (Yukihiro Matsumoto)Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0