[ruby-core:115008] [Ruby master Feature#5825] Sweet instance var assignment in the object initializer
From:
"matheusrich (Matheus Richard) via ruby-core" <ruby-core@...>
Date:
2023-10-12 02:41:57 UTC
List:
ruby-core #115008
Issue #5825 has been updated by matheusrich (Matheus Richard).
Maybe a different proposal, but if the `def initialize(@a, @b)` is ugly, how about a new method similar to `attr_{reader,writter}` like
```rb
class User
init_with :name, :age
# or maybe
attributes :name, :age
end
User.new("Matz", 21)
```
We could even have an option like `keyword_init: true` for keyword args.
On the other hand, a simple alternative is using the new `Data` class, which already provides this nicety:
```rb
User = Data.define(:name, :age)
User.new("matz", 21)
# or
User.new(name: "matz", age: 21)
```
----------------------------------------
Feature #5825: Sweet instance var assignment in the object initializer
https://bugs.ruby-lang.org/issues/5825#change-104875
* Author: goshakkk (Gosha Arinich)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
----------------------------------------
I'm very excited about this feature in CoffeeScript, and think it might be a nice-to-have thing in Ruby 2.0.
That's how I think it would look like:
~~~ruby
class Me
def initialize(@name, @age, @location); end
end
~~~
So we can declare `@variable`s in the initializer method parameters definition to avoid assigning instance variables from method arguments by hand, like:
~~~ruby
class Me
def initialize(name, age, location)
@name = name
@age = age
@location = location
end
end
~~~
Want to hear what do you guys think, does that feature worth being included in 2.0?
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/