From: fabio.ornellas@... Date: 2016-10-07T17:46:10+00:00 Subject: [ruby-core:77520] [Ruby trunk Feature#12820] Shorter syntax for assigning a method argument to an instance variable Issue #12820 has been reported by Fabio Pugliese Ornellas. ---------------------------------------- Feature #12820: Shorter syntax for assigning a method argument to an instance variable https://bugs.ruby-lang.org/issues/12820 * Author: Fabio Pugliese Ornellas * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Hello, The pattern: ~~~ class Person def initialize(name:) @name = name @age = 0 end end ~~~ 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 ~~~ class Person def initialize(@name : String) @age = 0 end end ~~~ 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. -- https://bugs.ruby-lang.org/ Unsubscribe: