Feature #12820
closedShorter syntax for assigning a method argument to an instance variable
Description
Hello,
The pattern:
is so common, that Cristal Programming Language has a shortcut for it:
https://crystal-lang.org/docs/syntax_and_semantics/methods_and_instance_variables.html
This is a feature request to implement the same style to Ruby syntax, supporting both isolated parameters and Hash style parameters. Eg:
class Person
attr_reader :name, :age
def initialize(@name, @age:)
end
end
fabio = Person.new("Fabio", age: 34)
fabio.name #=> "Fabio"
fabio.age #=> 34
This will be very useful in methods that accept a lot of parameters and certainly will avoid bugs due to decreased duplicated code (eg: addind a new parameter to a method, and forgetting to set the instance variable to it). Other than implementing support for the syntax itself, I believe RDoc would also have to be updated, not to expose the "@" on documentation (as it is not relevant there).
What do you think?
Thank you.
Updated by phluid61 (Matthew Kerwin) almost 10 years ago
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Is duplicate of Feature #5825: Sweet instance var assignment in the object initializer added
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Is duplicate of Feature #8563: Instance variable arguments added
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Is duplicate of Feature #12023: Allow ivars to be used as method arguments added
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Is duplicate of Feature #12578: Instance Variables Assigned In parameters ( ala Crystal? ) added
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Description updated (diff)
Matthew Kerwin wrote:
Is this now the most-duplicated feature request in Ruby?
By crystal?
Updated by matz (Yukihiro Matsumoto) over 8 years ago
- Status changed from Open to Rejected
My opinion has not been changed from https://bugs.ruby-lang.org/issues/8563#note-3
I am strongly against code like
I don't care about define_attr_initialize not being "the solution".
Matz.
Updated by matz (Yukihiro Matsumoto) almost 8 years ago
- Related to Feature #15192: Introduce a new "shortcut assigning" syntax to convenient setup instance variables added